C语言指针和函数的问题。!~~

2025-03-28 04:42:51
推荐回答(4个)
回答1:

这么给你解释吧,指针就相当是一个门牌号。第一个呢,是因为f()函数的参数是指针,就是“门牌号”,所以他们交换的时候是把门牌号进行了交换。所以当你第二次进行访问的时候,原来A房间变成了B房间,所以当你想要让A房间里的人出来的时候,这个时候原来住在里面的B君就出来了。所以发生了交换。
第二个呢,传的是形参,形参就是把A君复制一个(我们理解为克隆一个A君),然后克隆一个B君,最后把克隆人交换。然后我们输出的时候,我们却要A房间里的人,那个时候,A君还在自己的房间,当然他们出来的时候,就是没有交换了。如果,要交换,我们可以输出克隆人。那么看到的结果就是已经发生了交换。
我把第二个代码,给你稍微改下,就是输出克隆人,那么你就会看到,我们原来交换的只是克隆人了。
============
第二个
#include
void main()
{void f(int x,int y);
int a,b;
scanf("%d,%d",&a,&b);
f(a,b);
}
void f(int x,int y)
{int p;
p=x;
x=y;
y=p;
printf("%d,%d",x,y);
}
输入5,9
输出9,5
===========

有不明白的继续追问!

回答2:

楼主你好。
#include

int main()
{ void change_values(int *p,int n,int k);
void print_array(int *p,int n);
int a[5]={10,15,20,25,30};
printf("修改前,数组元素的值:");
//代码段1
print_array(a, 5);
printf("修改后,数组元素的值:");
//代码段2
change_values(a, 5, 3);
print_array(a, 5);
return 0;
}
//函数功能:修改一位数组元素的值,规则是:新值=原值*k
//参数:p是指针变量,存放一位数组首地址,n是元素的个数,k是乘数
void change_values(int *p,int n,int k)
{
//代码段3
int i;
for(i=0;ip[i]*=k;
}
}
//函数功能:输出一位数组元素的值
void print_array(int *p,int n) //参数:p是指针变量,存放一位数组首地址
{
//代码段4
int i;
for(i=0;iprintf("%d ",p[i]);
}
printf("\n");
}
输出:
修改前,数组元素的值:10 15 20 25 30
修改后,数组元素的值:30 45 60 75 90
Press any key to continue

回答3:

你的k到底是几啊、?以8为例
代码1
change_values(a,5,8);
代码2
print_array(a,5);
代码3
int i;
for(i=0;i*(a+i)=*(a+i)*k;
代码4
int j;
for(j=0;j printf("%d ",*(a+i));
好久没动c了。不知道有没有错误。临时这台机器上没装编译器,试试吧

回答4:

这。。。。。。。
自己写撒
真心的