c - 什么是 C 中传递的 byValue 和 byReference 参数?

标签 c

<分区>

我不明白这是什么意思。如果让我尝试猜测,我会说 byValue 参数传递是基于变量值传递参数,所以我在想:

if (a == 1){
 PassAnArgumentOrSomething()
}

但这可能是错误的:/

至于byReference,我不知道。

如果有人能帮助我,那就太棒了:)

最佳答案

除了数组和函数(见下文)之外,C 总是“按值”传递参数:将每个参数值的副本传递给函数;该函数不能修改传递给它的实际参数:

void foo(int j) {
  j = 0;  /*  modifies the copy of the argument received by the function  */
}

int main(void) {
  int k=10;
  foo(k);
  /*  k still equals 10  */
}

如果您确实希望函数修改其参数,您可以使用指针参数来获得所需的效果:

void foo(int *j) {
  *j = 0;
}

int main(void) {
  int k=10;
  foo(&k);
  /*  k now equals 0  */
}

这有时在其他语言中称为“按引用传递”。

关于c - 什么是 C 中传递的 byValue 和 byReference 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442508/

相关文章:

c++ - 位移位和赋值

任何人都可以解释代码的以下输出吗?

c - scanf 格式的硬编码字符串

c - 在机器上查找可用的网络端口

c - 使用指定的初始值设定项来初始化结构中的二维字符数组初始值设定项会在 VS2013 中发出错误 C2078

c - 检查有效 Unix FTP 命令的程序(不工作)

c++ - 如何编译包含 C 源文件的 C++ 源代码?

c - GCC 中的段错误

c - 我的免费工作正常吗?

c - 修改字符指针字符串数组(char * string[])