使用指针
- 接收整型参数并修改
如果传入a而不是a的地址,那么在函数中 int b = a,&a != &b, 即b是a的副本,在函数中修改的b值并不会影响a
void change01(int *b){
*b = *b+1;
}
int main() {
int a = 10;
change01(&a);
printf("%d\n",a);
}
- 接收指针参数让其指向别处
注意如果想让指针pt1指向别处(这里是pt2所指向的变量),那么你只能选择向函数传输pt1的地址而不是pt1所存储的地址值,因为若你向函数中传输了pt1的值,那么在函数中依旧是创建了pt1副本,在函数中修改pt1的值并不会影响原来pt1的值,其实和上面一个道理。
void change03(int **pt1_,int *pt2){
*pt1_ = pt2;
}
int main(){
int a = 10;
int *pt1 = NULL;
int *pt2 = &a;
change03(&pt1,pt2);
printf("%d\n",*pt1);
}
使用引用
- 依旧是上面第一个例子
在函数中 int &b = a 接收到了参数,b只是a的一个引用,即&b=&a,既然修改的值的地址相同,那么肯定修改成功。
void change02(int &b){
b = b + 1;
}
int main()
{
int a = 10;
change02(a);
}
- 依旧是上面第二个例子
- 你会发现pt3_和pt3的地址相同,这样证明了pt3_是pt3的引用,修改pt3_就是在修改pt3

void change04(int *&pt3_,int *pt4){
pt3_ = pt4;
}
int main()
{
int a = 10;
int *pt3 = NULL;
int *pt4 = &a;
change04(pt3,pt4);
printf("%d\n",*pt3);
}