【发布时间】:2017-05-14 06:11:58
【问题描述】:
x 和 y 的最终值应为 x = 4 和 y = 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