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);