大虾们。。再次求2级C的一道题。。谢谢了

来源:百度知道 编辑:UC知道 时间:2024/07/07 21:38:35
以下程序的输出结果是?
#include <stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5, *p=&i,*q=&j;
swap(p,q);
printf("%d %d\n",*p,*q);
}

难倒 p=&j, q=&i没有传回去么??这是为什么呀?
答案是3 5

swap函数里把两个参数指针的值交换了,却没有把指针指向的变量的值交换,当然还是3 5了。

void swap(int *a,int*b)
{int *t;
t=a;a=b;b=t;
}
应该改成:
void swap(int *a,int*b)
{int t;
t=*a;*a=*b;*b=t;
}