gpt4 book ai didi

c - 你如何使用 scanf 在 C 中获取一个 int?

转载 作者:行者123 更新时间:2023-12-04 10:37:32 25 4
gpt4 key购买 nike

我正在尝试了解从控制台获取输入的不同方式的优点和缺点。我对 scanf 感到困惑。为什么我需要使用 &favNumber 而不是 favNumber

我理解&favNumberfavNumber的地址位置,但是为什么要这样呢?

我觉得这里存在类型不匹配,其中 favNumber 是一个 int,而我告诉 scanf 它是一个指向 int 的指针。我以为我全神贯注于指针,但这让我有点困惑。任何帮助,将不胜感激。谢谢!

#include <stdio.h>

int main()
{
char userPrompt[100] = "What is your favorite number?";
int favNumber;

printf("%s", userPrompt);
scanf("%d", &favNumber);
printf("%d", favNumber);

return 0;
}

最佳答案

当您按值调用函数时,该函数会获得参数的副本。对函数中参数的任何更改都不会影响原始变量的值。

void foo(int i )
{
i = 20; // The change is local to the function.
}

void bar()
{
int i = 10;
foo(i);
printf("i=%d\n", i); // i is still 10.
}

如果你想让一个函数改变一个变量的值,函数必须使用指针类型并且调用函数在调用函数时必须使用变量的地址。

void foo(int* i )
{
*i = 20; // The change is visible in the calling function
}

void bar()
{
int i = 10;
foo(&i);
printf("i=%d\n", i); // i is now 20.
}

这就是为什么 scanf 需要指针,并且调用函数在调用 scanf 时必须使用变量的地址。 scanf 必须能够设置变量的值。

关于c - 你如何使用 scanf 在 C 中获取一个 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717059/

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