C语言指针变量作函数参数问题 求大神帮忙

#include<stdio.h>voidswap(int*a,int*b){inttmp;tmp=*a;*a=*b;*b=tmp;}main(){intx,y;int*... #include<stdio.h>

void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
main()
{
int x,y;
int *u_x,*i_y;
printf("please input two digit\n");
scanf("%d%d",&x,&y);
u_x=&x;
i_y=&y;
swap(u_x,i_y);
printf("x=%d\n",x);
printf("y=%d\n",y);
}

这个程序前面声明的函数void swap(int *a,int *b)里面形参加了*号,为什么后面套用函数的时候
swap(u_x,i_y);就不加*号了呢,这样单纯的u_x不是指示&x吗 只是个地址啊,而上面函数定义时
里面的运算是带*号的啊,不是表示地址里面的数的运算吗?不是地址的运算吧?swap(*u_x,*i_y);
这样为啥是错的呢?为啥不能带*号?

求大神告诉原因
展开
 我来答
b_spike
2016-09-07 · TA获得超过3687个赞
知道大有可为答主
回答量:3724
采纳率:78%
帮助的人:1194万
展开全部
因为使用地址作参数,那么传参就是传地址啊,当然要传u_x即&x啦
另外,对指针来说,定义的时候加*是为了区别指针变量与非指针变量,如果函数定义中的int *a,int *b的两个星号去掉,那就说明形参变量不是指针类型了。但指针在使用时,不需要再加星号,加星号就是星号运算,也就是访问对应的地址并取出里面的值了。所以调用函数时只需要传地址,不能加星号,加了星号那就是把这个地址的值取出来作实参了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式