2 c++ pointers function pass-by-value
从大学课程的讲座笔记,"按价值呼叫":
Run Code Online (Sandbox Code Playgroud)void fun(int *ip) { *ip =100; }
叫做
Run Code Online (Sandbox Code Playgroud)int n=2; int *np; np = &n; fun(np);
会将n的值更改为100.
当我们说"int*ip"时,我们究竟是什么意思?一个整数类型的指针?如果是这样,当我们用np作为参数调用fun()时,不应该有错误,因为np的地址为n,这不是一个整数?
然后,我们将ip的值更改为100,那么这是不是意味着n现在具有地址为100的"内存插槽"中的值?我相信我错过了一些东西.:)
一个整数类型的指针?
不,一个指针到一个整数.
当我们用np作为参数调用fun()时,不应该有错误,因为np的地址为n,这不是一个整数?
n
是一个整数所以没有问题.&n
,np
并且ip
代码中的所有类型都相同:int*
.
然后,我们将ip的值更改为100
不...我们改变的价值*ip
,而不是ip
.也就是说,我们改变ip
指向的值(有时也称为指针对象).