C语言中,不同代码块中的相同名字的变量是不同的,准确的说是指针不同,因此在某个函数体内是无法改变函数体外的变量,除非使用指针;
/*无法能起到在函数内部改变函数外部变量的作用*/ #include <stdio.h> int main(void){ int x=10; int y=20; exchange(x,y); printf("交换后x:%d",x); printf("交换后y:%d",y); } void exchange(int u,int v){ int temp; temp=u; u=v; v=temp; } /*用指针才能起到在函数内部改变函数外部变量的作用*/ #include <stdio.h> int main(void) { int x=10; int y=20; exchange(&x, &y); printf("交换后x:%d", x); printf("交换后y:%d", y); } void exchange(int *u, int *v) { int temp; temp = *u; *u = *v; *v = temp; }