C语言,指针传参什么是以值传递形式传递

img


为什么说str是以值传递的形式给p,str的内容不改变?str的类型符合定义函数中形参的类型啊

因为你在函数中修改的是指针自身的地址,这就相当与值参了。

抽象的理解实参形参,你就会被绕晕
其实实参形参的关系跟两个变量赋值是一回事
假如有两个变量int a=1;int b=a;
当执行b=3;之后,你应该知道a的值不会跟着变吧
那么假如不是两个int,而是两个指针呢
int c=0;int *a=&c;int *b=a;
此时如果执行int d=0;b=&d,a会跟着变吗,也指向d了吗,并不会吧
-=-=-=
那么再看你的代码里,函数中将指针p重新指向了一块新分配的内存空间,它会改变传入的str吗?明显不会。