C++中的指针和函数

2 c++ pointers function pass-by-value

从大学课程的讲座笔记,"按价值呼叫":

void fun(int *ip)

{

*ip =100;

}
Run Code Online (Sandbox Code Playgroud)

叫做

int n=2;  

int *np;

np = &n; 

fun(np);
Run Code Online (Sandbox Code Playgroud)

会将n的值更改为100.

当我们说"int*ip"时,我们究竟是什么意思?一个整数类型的指针?如果是这样,当我们用np作为参数调用fun()时,不应该有错误,因为np的地址为n,这不是一个整数?

然后,我们将ip的值更改为100,那么这是不是意味着n现在具有地址为100的"内存插槽"中的值?我相信我错过了一些东西.:)

Kon*_*lph 7

一个整数类型的指针?

不,一个指针一个整数.

当我们用np作为参数调用fun()时,不应该有错误,因为np的地址为n,这不是一个整数?

n是一个整数所以没有问题.&n,np并且ip代码中的所有类型都相同:int*.

然后,我们将ip的值更改为100

不...我们改变的价值*ip,而不是ip.也就是说,我们改变ip 指向的值(有时也称为指针对象).

  • 是的,但是有一个问题:如果你说`int*ip,ip2;`,`ip`是指向`int`的指针,但`ip2`只是一个`int`.`*`与名称相关联,而不是类型.因此人们写`int*ip;`来提醒自己. (2认同)