2

这个问题可能看起来很愚蠢,但这就是人们学习的方式:)。我学习了 C++,您不必担心在 cin>> 中引用 int 变量。今天我正在学习 C 中的文件处理以用于学校工作,但是当我尝试使用这种语法运行程序时,我得到了错误。

scanf("%d\n %s\n",id, name);

但是当我在scanf中引用id时,错误消失了。

scanf("%d\n %s\n",&id, name);

为什么会这样?我将非常感谢您回答这个菜鸟问题..

4

4 回答 4

1

scanf需要的地址,id因此它会扫描将值存储在那里。它对您在第一个案例中给出的当前值不感兴趣。

于 2012-09-08T14:00:29.853 回答
1

scanf是一个函数,它需要一个指向变量的指针,以便它可以将读取的值存储到指针指向的位置。

name大概是某种 ( char?) 数组,因此该变量的标识符已经引用了一个地址,因此&不需要运算符。然而,对于int变量(我假设id是某种int),您需要获取要scanf在调用中传递的地址。

于 2012-09-08T14:00:39.543 回答
0

scanf 是一个 C 函数。C 没有引用,因此要更改变量 scanf 需要传递一个指向该变量位置的指针。C++ 有引用,所以它不需要指针,尽管它也可以使用它们。

于 2012-09-08T14:02:18.860 回答
0

scanf()需要变量的地址来存储数据。

如果是整数,则需要“ & ”符号来引用整数变量的地址。但在字符串的情况下,不需要使用“ & ”,因为字符串已经是指向字符数组的指针。

于 2012-09-08T14:10:23.643 回答