【发布时间】:2011-01-07 00:47:20
【问题描述】:
来自大学课程的讲义,关于“按值调用”:
void fun(int *ip) { *ip =100; }
由
调用int n=2; int *np; np = &n; fun(np);会将 n 的值更改为 100。
当我们说“int *ip”时,我们究竟是什么意思?整数类型的指针?如果是这样,当我们以 np 为参数调用 fun() 时,由于 np 的地址不是整数,不应该有错误吗?
然后,我们将 ip 的值更改为 100,这是否意味着 n 现在具有地址为 100 的“内存槽”中的值?我确定我错过了一些东西。 :)
【问题讨论】:
-
如果你只是想改变一个变量的值,你也可以写
int n = 2; fun(&n);。 -
np 的类型为“int*”,如果这有助于您理解的话。
标签: c++ pointers function pass-by-value