为什么这个程序会给出seg错误?

时间:2014-10-14 01:43:24

标签: c pointers

这是我的计划:

#include<stdio.h>
int main()
{
    int *n;
    int var;
    scanf("%d",n);
    printf("%d",*n);

}

因为scanf将值存储在指定地址我给出地址。然后我尝试在地址处打印值,但是它给出了段错误。

3 个答案:

答案 0 :(得分:2)

你应该为这样的指针分配内存:

int* n = (int*)malloc(sizeof(int))

答案 1 :(得分:2)

这是因为尚未分配内存块以包含变量n引用的整数值。您只初始化了一个指向内存块的指针,而不是内存块本身。

如果您改为执行以下操作,代码将起作用:

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d", n);
}

答案 2 :(得分:0)

var n是指针,你没有malloc内存。