【问题标题】:Change Value of Variable in Function in C [duplicate]在C中更改函数中变量的值[重复]
【发布时间】:2017-05-14 06:11:58
【问题描述】:

xy 的最终值应为 x = 4y = 21。我明白为什么是y = 21,但为什么是x = 4? “a = 5”不应该将值更改为5吗?谢谢

int f(int a, int *b){
    a = 5;
    *b = *b + 3*a;
}

int main(){
    int x, y;
    x = 4;
    y = 6;
    f(x, &y);
    // What are x and y now?
}

【问题讨论】:

  • C 对所有函数参数使用按值传递。更改函数中的变量不会更改传入的原始变量的值。
  • @kaylum 你介意详细说明一下吗?
  • 最好是查阅教科书。任何基本的 C 书籍或教程都涵盖了 C 语言的这一基础知识。
  • 按值传递意味着函数获取参数的副本,因此函数内部所做的任何更改都不会反映在原始变量中。

标签: c function pointers function-parameter


【解决方案1】:

在你的函数中,a 是按值而不是按引用传递的,所以 x 值不会改变。而 b 是通过引用传递的,所以 y 的值发生了变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2019-12-29
    • 2013-07-15
    相关资源
    最近更新 更多