在函数中引用指针有什么区别

时间:2019-04-29 23:48:50

标签: c

我正在创建一个修改变量的函数,以便引用它的函数(父函数?)可以使用它。

在下面的代码中,使用“&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),但是两者之间是否存在明显差异?

1 个答案:

答案 0 :(得分:0)

第一次调用从参数z初始化参数,即参数的值是指针z的值,该指针被初始化为指针&x指向对象x.的值。第二个调用从参数&x初始化参数,该参数是指向对象x的指针值。两次调用之间没有功能上的区别。在这两种情况下,函数中的参数p将具有完全相同的值,即指向x的指针值,唯一的区别是该值来自于函数调用点的位置…