黑马程序员-------C语言----指针做函数参数

来源:互联网 发布:ubuntu上安装mysql5.7 编辑:程序博客网 时间:2024/05/20 09:21

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


看能不能改变传入的变量的值,主要看函数内能不能获得被传入变量的地址

int func(int a){    a = 3;}int a;  func(a);  

修改不了外面a的值,获取不到a的地址,因为是值传递

int func(int *p){    *p = 1;}int *p ;func(p);

获取不到p的地址,但是可以获取到p里面存储的地址,所以无法改变p的值,可以改变p里面存储的地址指向的内存里的值

int func(int *p){*p = 1;}int a = 0;func(&a);

可以改变a的值,因为函数获取到了a的地址,所以可以改变

int func(int **pp){}int **pp1; func(pp1);

不可以改变pp1的值,以为外面的pp1和函数里形参pp是同一级别的,pp1只能把它存储的指针的地址传给pp
int *p;要想改变p的值,传递的时候要传p的地址 func(&p)

int a; p=&a;  func(&p),

可以改变a的值,但需要把a的地址赋给一个指针,然后把这个指针的地址传进去, 在函数里需要解引用2次才能获得a的值

0 0
原创粉丝点击