C语言:我使用子函数将指针变量中的指针进行交换,但是为什么所指向的变量却没有变?程序如下:

void huan(int* a, int* b)
{
int* temp;
temp = a;
a = b;
b = temp;
}
void main()
{
int a, b;
int* pa;
int* pb;
scanf("%d %d", &a, &b);
pa = &a;
pb = &b;
huan(pa, pb);
printf("%d %d %d\n", *pa, *pb);
system("pause");
}

C语言中的任何函数形参都是值传递。所谓引用传递,不过是指针的值传递而已。

你的函数做的工作只是交换函数中的两个临时变量a和b的值,结果不会影响到外部的实参pa和pb。如果想要交换两个指针的值,你的形参应该为两个二级指针。

温馨提示:答案为网友推荐,仅供参考
相似回答