3个回答
展开全部
题目都不给全,怎么解。
追问
我在上面用铅笔写上了啊
追答
很好理解啊,
按照题目的意思,是这样
func(int *a,int *b)
{
int *k;
k=a;a=b;b=k; // 两个变量的值互换;注意这两个变量局部
printf..// 打印互换地址后的结果 main中此处应该打赢6,3
}
main()
{
int a=3,b=6,*x=&a,*y=&b;
func(x,y);//打印6,3 //x,y地址不变,因为fun的操作只对局部变量有效
printf("%d %d",*x,*y);//打印结果:3 6
printf("%d %d",a,b);// 也是3 6
}
如果想将a和b通过指针的方式五换,应该这样写
#include "stdio.h"
void func(int *a,int *b)
{
int k;
k = *(int*)(*a); *(int*)(*a) = *(int*)(*b); *(int*)(*b) = k;
printf("%d %d\n", *(int*)(*a), *(int*)(*b));
}
void _tmain(int argc, _TCHAR* argv[])
{
int a = 3,b = 6,*x = &a, *y = &b;
func((int*)&x, (int*)&y);
printf("%d %d\n", *x, *y);
printf("%d %d\n", a, b);
while (1);
}
互换个值这么费劲也是醉的。
展开全部
因为x,y是指针,分别保存了a,b的地址所以到当调用x和y的时候,其实是把a和b的地址传过去了,所以当在函数内操作x和y的时候,其实也相当于操作a与b的值,所以在函数内,指针变量a,b通过指针变量K交换了指向的地址,但是并没有交换主函数内a,b的值,只是把fun函数内的指针变量a,b所存的地址交换了而已,所以主函数内的a,b的值并没有改变:
答案应该是:
6,3
3,6
3,6
答案应该是:
6,3
3,6
3,6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面的fun没有抄错吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询