首先,我知道用指针可以改实参的值,就比如这样
int main() {
int i = 10;
a(&i);
printf("%d", i);
}
void a(int * p){
* p = 5;
}
这样就可以改变 i 的值为5
然后我又发现有书上这样写,
int main() {
int i = 10 ;
a(i);
printf("%d", i);
}
void a(int & p){
p = 5;
}
这输出特么 i 也是 5
到底是为什么,上面的我懂,把 i 的地址 发给p,然后改变 * p 的值就是改变 i;
而下面的是怎么做到的,发送 i 给 & p ,为什么 p 改变了也能改变 i
而且 & 是取地址符吧,为什么 int 类型的变量 i 能发送给 &p ?
*是传地址,&是传引用,你学过c++就知道了,&不是C语言里的
本回答被提问者采纳