gpt4 book ai didi

c - 为什么在C中扫描输入时需要(&)的地址位置

转载 作者:行者123 更新时间:2023-12-03 05:31:48 25 4
gpt4 key购买 nike

我只是复习了一些 C 笔记,我想知道你是否要这样做:

int var1 = 0;
scanf("%d", var1);

你会遇到某种问题。就好像你用操作的地址位置来写它一样:

int var1 = 0;
scanf("%d", &var1);

它工作得很好。

我一直有这样的印象:要存储值,您只需使用变量名称...为什么我们要指定地址 lcoation?

最佳答案

因为C是按值复制参数的。考虑这个(无用的)函数:

void set_one(int x)
{
x = 1;
}

当您将此称为

int i = 2;
set_one(i);

与此相同

set_one(2);

该函数获取 2 的副本,称之为 x ,然后用 1 覆盖它并返回。原文2 ,又名i ,没有改变。

要使此函数甚至远程有用,您必须告诉它将结果放在哪里,而不是结果位置中的当前:

void set_one(int *p)
{
*p = 1;
}

现在调用set_one(&i)告诉函数将其结果存储在变量名 i 指定的位置,结果会被覆盖。

关于c - 为什么在C中扫描输入时需要(&)的地址位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019232/

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