c语言 指针问题。帮忙做下这题,不胜感激!!

2024-12-31 21:14:29
推荐回答(5个)
回答1:

程序是错的!fun(x,y)参数是错的,因为fun(int *a,int *b)中的int *a,int *b与x,y不是同一类型!
你的意思是要交换x和y的值吗?
第一次调用和第二次调用fun函数的输出结果都是3,5,要想用指针在自定义函数fun完成交换,就必须直接用指针运算(用指针运算直接运算时应该把int*c改成int c;),而不能用指针变量运算,因为实参与形参的值是单向传递的,在fun函数中交换指针变量的值不能使,main函数中对应实参发生改变!

回答2:

前面两个输出的值都不变 3,5
fun(x,y) 这个调用是错的,当然,如果你的编译器没有报错,输出仍然为 3,5

回答3:

不懂调用为什么有点时候改值有的时候没改值
你就把函数替换进main里面
这里
int x=3, y=5, *p=&x, *q=&y;
fun(p,q);
可以替换成
int x=3, y=5, *p=&x, *q=&y;
int *a=p;int *b=q;//函数传参数的操作
int *c;
c=a; a=b; b=c;

你会发现 指针a和b在指向pq之后 指向其他地方了
没有修改pq指针的内容

回答4:

倒数第二行的fun(x,y)改成fun(&x,&y),我想你是笔误。那么,刚开始你想交换p,q的值,但是这是不能成功的。fun函数的功能范围就只限制于fun函数本身了。

回答5:

5,3
5,3
这个fun(x,y)调用是不正确的