1.交换两个数
版本0
void swap_v0(int a, int b){ //局部变量a,b int t=0; t = a; a = b; b = t; }
int main (void){ int a = 1; int b = 2; swap_v0(a,b); printf("%d %d\n", a, b); }
运行结果
1 2
考虑使用指针传递参数
版本1
void swap_v1(int * a, int * b){ //局部变量a,b int t=0; t = *a; a = *b; *b = t; }
int main (void){ int a = 1; int b = 2; swap_v1(&a,&b); printf("%d %d\n", a, b); }
运行结果
2 1
或使用引用传递参数
版本2
void swap_v2(int & a, int & b){ //局部变量a,b int t = 0; t = a; a = b; b = t; }
int main (void){ int a = 1; int b = 2; swap_v2(&a,&b); printf("%d %d\n", a, b); }
运行结果
2 1
2.改变指针的值
版本0
void fun_v0(char * q){ //局部变量 ++q; }
int main (void){ char * p; printf("%p\n",p); fun_v0(p); printf("%p\n",p); }
运行结果
00000000001E1370 00000000001E1370
版本1
void fun_v1(char ** q){ //局部变量 ++(*q); }
int main (void){ char * p; printf("%p\n",p); fun_v1(&p); printf("%p\n",p); }
运行结果
00000000001E1370 00000000001E1371
使用引用传递参数
版本2
void fun_v2(char * & q){ //局部变量 ++q; }
int main (void){ char * p; printf("%p\n",p); fun_v2(p); printf("%p\n",p); }
运行结果
00000000001E1370 00000000001E1371