- 通俗来说就是通过c语言指针间接改变变量的值
- 举个列子:我们想通过函数add()实现变量a+1,不使用指针的代码如下:
#include <stdio.h>
void add(int px); //形参为px
int main(void)
{
int a=1;
add(a); //a为实参
printf("a=%d\n",a);
return 0;
}
void add(int px){ //实现变量+1
px++;
}
执行情况是a的值没有变化,这是因为在c语言中实参和形参之间的数据传输是单向的“值传递”方式,也就是实参可以影响形参,而形参不能影响实参。
3. 因此,要在主函数为改变变量a的值需要借助指针间接改变变量a的值
#include <stdio.h>
void add(int *px);
int main(void)
{
int a=1;
int *pa; //pa是指针变量名
pa=&a; //把变量a的地址赋给指针变量pa
add(pa);
//将指针pa所指向的内存单元的值+1,也即变量a的存储空间所存储的值+1
printf("a=%d\n",a);
return 0;
}
void add(int *px){ //实现变量+1
*px+=1; //指针px所指向的内存单元的值+1
}
`
4.总结:可以把pa=a来理解,把pa+1就相当于a+1,而在代码1的例子中就像是A把一封没写地址的信发给了B,B收到了信,对信进行了修改,但是没有地址将信发回给A;而代码2中的利用指针变量pa=&a,给信封写上了地址,这样B能把修改后的信封发回给A,从而得到修改了的信,也即变化了的a.