问这个问题,说明你对指针和参数传递的基本概念还没有搞清楚。假定有个函数:
- void foo(int a)
- {
- a = 2;
- }
复制代码
再假定main函数中定义了一个变量
int a = 4;
当你调用foo(a)时,你是把main中的变量a的值赋给foo函数的参数a,main函数中的a和foo函数的参数a是两个不同的变量,你在foo函数中操作a,不影响main函数中a的值,也就无法保存foo函数对a的修改结果
现在如果你把foo函数改为
- void foo(int *a)
- {
- *a = 2;
- }
复制代码
调用foo(&a),是把main函数中变量a的地址值赋给了foo函数的参数a,*a=2中*a代表main函数中变量a所在的内存空间。因此*a=2就是把2放到main函数中变量a所在的内存空间,这样main函数中的变量a的值就被修改了。即使foo函数调用结束,修改的效果仍然保留 |