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