C 通过多个函数按引用传递

C 通过多个函数按引用传递,c,pointers,C,Pointers,大家好。我正在为学校做一个项目,我需要通过多个函数通过引用传递一些参数。我了解如何通过引用将变量从声明的位置传递到另一个函数,如下所示: main() { int x = 0; int y = 0; int z = 0; foo_function(&x, &y, &z); } int foo_function(int* x, int* y, int* z) { *x = *y * *z; return 0; } 但是,如何将x、y和z从foo

大家好。我正在为学校做一个项目,我需要通过多个函数通过引用传递一些参数。我了解如何通过引用将变量从声明的位置传递到另一个函数,如下所示:

main() {
  int x = 0;
  int y = 0;
  int z = 0;

  foo_function(&x, &y, &z);
}

int foo_function(int* x, int* y, int* z) {
  *x = *y * *z;
  return 0;
}
但是,如何将x、y和z从foo函数传递到另一个函数?类似这样的东西会给我各种编译器警告

int foo_function(int* x,  int* y, int* z) {
  *x = *y * *z;
  bar(&x, &y, &z);
  return 0;
}

int bar(int* x, int* y, int* z) {
  //some stuff
}
只需使用:

bar(x, y, z);
十、 Y和Z已经是指针了——直接传递就行了


记住-指针是内存中的一个位置。位置不变。当您取消引用指针时(使用*x=…),您正在该位置设置值。但当您将其传递到函数中时,您只是在传递内存中的位置。您可以将同一个位置传递到另一个函数中,它可以正常工作。

您不需要做任何事情,它们已经是引用了

int foo_function(int* x,  int* y, int* z) {
  bar(x, y, z);
  return 0;
}

int bar(int* x, int* y, int* z) {
  //some stuff
}

在foo_函数中,xy和z已经是指针(int*),所以可以执行bar(x,y,z)。

C没有通过引用传递的概念。参数总是按值传递。但是,当使用指针时,该值实际上是指向实际值的指针

但是你在做什么呢

foo_function(&x, &y, &z);
实际上正在尝试获取指针的地址,这基本上是没有意义的(您将传递一个
int**
,而不是
int*

所以


这将是正确的调用,因为
x
y
z
已经是指针,您不需要再制作指针链:)

gaaakk…在代码的同一行上打开花括号…就像上帝自己所希望的那样。
foo_function(&x, &y, &z);
foo_function(x, y, z);