
有以下程序 #include <stdio.h> void fun(int *a,int *b) {int *c; c=a;a=b;b=c; }
有以下程序#include<stdio.h>voidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x...
有以下程序
#include <stdio.h>
void fun(int *a,int *b)
{int *c; c=a;a=b;b=c; }
main()
{int x=3, y=5,*p=&x, *q=&y;
fun (p,q);printf(“%d,%d,”,*P,*q);
fun(&X, &y);printf(“%d,%d\n”;*p.*q);
}
程序运行后的输出结果是 A)3,5.5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3
为什么结果是B,难道地址传递,不能改变值吗?求高手详细解答,谢谢 展开
#include <stdio.h>
void fun(int *a,int *b)
{int *c; c=a;a=b;b=c; }
main()
{int x=3, y=5,*p=&x, *q=&y;
fun (p,q);printf(“%d,%d,”,*P,*q);
fun(&X, &y);printf(“%d,%d\n”;*p.*q);
}
程序运行后的输出结果是 A)3,5.5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3
为什么结果是B,难道地址传递,不能改变值吗?求高手详细解答,谢谢 展开
4个回答
展开全部
调用fun(p,q)时就是让a指向p指的地方,b指向q指的地方,函数内部是让c指向a指的地方,让a指向b指的地方,再让b指向c指的地方,你发现这里面没有改变p和q原来指向的地方,即p还是指向x,q还是指向y。fun(&x,&y)是让a指向x,b指向y,你会发现这根本没涉及到p和q的指向,更谈不上改变它们的指向,所以答案选B啊。
展开全部
参数传递是拷贝副本后传入的,指针地址交换不会是指向内容的交换,c=*a;*a=*b;*b=c 就可以交换值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
4.[单选题] 有以下程序 void fun(int *a,int *b) { int *c; c=a;a=b;b=c; } main() { int x=3,y=5,*p=&x,*q=&y; fun(p,q); printf("%d,%d,",*p,*q); fun(&x,&y); printf("%d,%d\n",*p,*q); } 程序运行后的输出结果是()。
A3,5,5,3
B3,5,3,5
C5,3,3,5
D5,3,5,3
A3,5,5,3
B3,5,3,5
C5,3,3,5
D5,3,5,3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-26
展开全部
是啊,这个程序把地址传来传去,根本没有涉及到什么运算,数值到哪里改变去??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询