调用函数与c语言指针问题求教

#include

void swap(int*a,int*b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}

int main()
{
int x,y;
int *p_x,*p_y;
printf("请输入两个数\n");
scanf("%d%d",&x,&y);
p_x=&x;
p_y=&y;
swap(p_x,p_y);
printf("x=%d y=%d\n",x,y);
return 0;
}

这样的函数,p_x的值为x的地址。调用函数时,应该是将p_x的值赋予*a这个指针。
可是我发现*a的值是就是x,并不是x的地址,请问这是为什么?

1个回答

 这样写交换的是两个地址上的值,而不是交换指针
如果要按照你说的,应该是
void swap(int**a,int**b)
{
int* temp;
temp=*a;
*a=*b;
*b=temp;
}
qq_35219692
qq_35219692 回复caozhy: 哦哦 这样,懂了
4 年多之前 回复
caozhy
回答这么多问题就耍赖把我的积分一笔勾销了 回复qq_35219692: 不是,a和p_x对应,*a和x对应。
4 年多之前 回复
qq_35219692
qq_35219692 我的意思是void swap(int*a,int*b)与swap(p_x,p_y);这两个语句之间,*a应该和p_x对应,*b应该是和p_y对应是吧。可是实际上是a=p_x,b=,p_y
4 年多之前 回复
caozhy
回答这么多问题就耍赖把我的积分一笔勾销了 回复qq_35219692: a是指针,*a是值,如果你希望*a是指针,那么a就得是指针的指针,也就是int **
4 年多之前 回复
qq_35219692
qq_35219692 我就是想知道,调用一个函数,不应该是把括号里的值,传过去么。为什么对这个不适用,没有把p_x的值传给*a,而是直接传给了a
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐