我的代码是
#include<stdio.h>
#include<conio.h>
main()
{
int p;
scanf("%d",p);
printf(p*10);
}
但是它赋予垃圾价值,为什么?
我的代码是
#include<stdio.h>
#include<conio.h>
main()
{
int p;
scanf("%d",p);
printf(p*10);
}
但是它赋予垃圾价值,为什么?
您需要&p
在scanf
通话中使用。您还需要在printf()
调用中使用格式字符串。
以下是您的代码存在的主要问题的列表:
scanf("%d", p)
- 您需要将指针传递给 int,而不是 int。现在,您正在写入未初始化的 int 变量包含的任何地址/值。printf(p*10)
- 您需要将格式字符串作为第一个参数传递,并根据格式字符串传递值作为以下参数。在您的情况下,"%d"
打印一个整数,然后p
(或p*10
)作为第二个参数。这是固定代码:
int main()
{
int p;
scanf("%d", &p);
printf("%d\n", p*10);
}
您只需打印此未初始化变量的值。
scanf 需要一个指针来写答案。你提供一个看起来像内存地址的整数。例如,尝试使用 -Wall 进行编译
scanf("%d",p);
printf(p*10);
令我惊讶的是,这确实有效!尤其是printf
命令。
您需要阅读C 中的Format Specifiers
和printf
Andscanf
命令。:)
使用reference operator(&)
inscanf
和format specifier
in printf
。
garbage
如果您不使用'&'
运算符,您总是会得到一个值,scanf
因为输入的值不会存储在memory location
您的variable
. 它不知道在哪里存储..
它会扫描您的值,但不会存储在变量中。获得垃圾值的原因是您正在使用一个local
变量并且它的内存位置是STACK
.