您的位置:首页 > 其它

指针作为函数形参混淆辨析

2014-06-24 15:07 288 查看
#include<stdio.h>

void test(int *a, int *b);
void test2(int *a, int *b);

int main(){
int x=100, y=200;

//test(x,y);
//	printf("%p   %p\n",&x,&y);
test2(&x,&y);
printf("x=%d,y=%d\n",x,y);

}

void test(int *a,int *b){
int temp = *a;//传入参数的地址没有改变,改变的只是地址所指向的值
*a = *b;
*b = temp;
}

void test2(int *a, int *b){
int *temp = a;//交换地址,但不能改变x,y的实际地址,因为在编译的时候地址已经固定,需要更改地址所指向的内容
a = b;
b = temp;
printf("%d,%d\n",*a,*b);
}


如上代码,test()可以交换x,y的值,但是test2()函数却不可以,通过画图来分析一下



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: