正确编译后程序失败

Program fails after compiling properly

我用 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 的值,程序就崩溃了:

Crash message Crash message 2

作为旁注(我通常用 C++ 编程)添加 使用命名空间标准; 在编译时抛出错误。这正常吗?

如能就此问题提供任何帮助,我们将不胜感激。

您应该将变量的地址传递给 scanf(),而不是变量本身。变化

scanf("%d", N);

scanf("%d", &N);

否则,scanf将尝试将输入值设置为N指向的地址。 N的值在这里没有初始化,意味着程序会在这里访问不可预知的内存地址。这就是你的程序失败的原因。

scanf("%d", N);
           ^ missing & 

%d 需要 int.

的地址

只有这部分代码,程序才接收到参数N并结束。因为你不会对这个参数做任何事情。也许你应该告诉我们你是如何编写打印 n^2 命令的。它可能是这样的

printf("N^2 = %d", N*N);