我正在创建一个修改变量的函数,以便引用它的函数(父函数?)可以使用它。
在下面的代码中,使用“&x”与使用“ z”之间有区别吗?
void changeX(int *p);
int main(void) {
int x = 10;
int *z = &x;
changeX(z);
// or
changeX(&x);
return 0;
}
void changeX(int *p){
*p = *p + *p;
}
输出为:
10
20
40
两者都会产生相同的结果(以相同的方式更改x),但是两者之间是否存在明显差异?
答案 0 :(得分:0)
第一次调用从参数z
初始化参数,即参数的值是指针z
的值,该指针被初始化为指针&x
指向对象x.
的值。第二个调用从参数&x
初始化参数,该参数是指向对象x
的指针值。两次调用之间没有功能上的区别。在这两种情况下,函数中的参数p
将具有完全相同的值,即指向x
的指针值,唯一的区别是该值来自于函数调用点的位置…