gpt4 book ai didi

c - 为什么在 C 语言中我们不能使用 a 代替 &a 来存储变量 a 的值?

转载 作者:行者123 更新时间:2023-11-30 16:27:22 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com