我在C中编写了一个简单的循环,用于从用户打印给定N的n ^ 2。输入N后它崩溃了。我已经删除了循环,当我现在正在使用scanf输入N时它仍然崩溃。这是我写的:
#include <stdio.h>
int main()
{
int n;
int N;
printf("Input iterations: ");
scanf("%d", N);
return 0;
}
我正在使用gcc编译器,并使用命令提示符(Windows 10)使用以下命令对其进行编译:
gcc "C2 Loops.c" -o "C2 Loops.exe"
它编译得很好,然后在我输入时运行:
"C2 Loops.exe"
但是只要我输入N的值,程序就会崩溃:
作为附注(我通常用C ++编程)添加 using namespace std; 在编译时抛出错误。这是正常的吗?
对此问题的任何帮助将不胜感激,谢谢。
答案 0 :(得分:4)
scanf("%d", N);
^ missing &
%d
预计地址为int
。
答案 1 :(得分:2)
您应该将变量的地址传递给scanf()
,而不是变量本身。变化
scanf("%d", N);
到
scanf("%d", &N);
否则,scanf
会尝试将输入值设置为N
指向的地址。 N
的值未在此处初始化,表示程序将在此处获得不可预测的内存地址。这就是你的程序失败的原因。
答案 2 :(得分:0)
只有这部分代码,程序才会返回参数N并结束。因为这个参数你不做任何事情。也许你应该告诉我们你怎么写打印n ^ 2命令。它可能像
printf("N^2 = %d", N*N);