作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
void main()
{
int a;
printf("Enter a value to store :");
scanf("%d",&a) ; // Why Can't we use a instead of &a to store value of variable a ???
printf("value of a is %d", a) ;
printf("\naddress of a is %d", &a) ;
getch() ;
}
最佳答案
因为在C中函数调用中的参数是按值传递的。如果您只是给它a
,那么就无法实际存储值。当然,它可以更改函数中的 a
,但它只更改了值的副本,而不是原始值。它甚至不需要那个值,它也不想写一个值。因此,它需要的是一个值的地址,这样它就可以使用该地址来写入新值。
Why Can't we use a instead of &a to store value of variable a
好问题!您想到的是一个称为“按引用传递”的概念,并且某些编程语言实际上是这样做的。在那里,您传递的 a
将是相同的 a
,而不仅仅是它的副本,因此如果写入它,原始内容也会更改。例如,在 C++ 中:
int a = 1;
void increase(int& myInt) {
myInt++;
}
int main() {
increase(a);
printf("%d\n", a);
return 0;
}
这里打印了2
,因为原来的a
增加了。如果函数签名中没有 & 符号,则将打印 1
,因为仅修改了副本。
关于c - 为什么在 C 语言中我们不能使用 a 代替 &a 来存储变量 a 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52753508/
我是一名优秀的程序员,十分优秀!