尝试在C中打印值时出现分段错误

6 c pointers segmentation-fault

以下C代码返回"分段错误"错误.我不明白为什么它不返回值20.我的错误是什么?

#include <stdio.h>

int main() 
{
    int* n;
    *n = 20;

    printf("%i\n",*n);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

Dan*_*her 15

你没有分配内存n,所以

*n = 20;
Run Code Online (Sandbox Code Playgroud)

试图写出未指定的内存.

尝试

#include <stdlib.h>

int *n = malloc(sizeof *n);
/* use n */
free(n);
Run Code Online (Sandbox Code Playgroud)


pb2*_*b2q 5

你有没有为你分配的空间int,你只申报一个指针int

指针未初始化,因此写入内存中的未知空间是未定义的行为并会导致问题。这通常会导致段错误。

您可以使用malloc以下方法为整数分配一个插槽:

n = malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

free在稍后使用相应的调用来释放内存:

free(n);
Run Code Online (Sandbox Code Playgroud)

但是为一个整数分配一个槽是很不寻常的,通常你会int在堆栈上分配:

int n;
n = 20;
Run Code Online (Sandbox Code Playgroud)