一个简单的指针代码

joy*_*joy -3 c pointers

#include <stdio.h>

int main(void)
{
    int* a;
    *a=20;
    printf("%i\n",*a);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有上面的代码.当代码在运行时,我总是收到错误消息"filename.exe已停止工作".为什么?

Dav*_*nan 6

您没有为指向指向的指针分配任何内存.你可以这样做:

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

或者像这样:

int value;
int *a = &value;
Run Code Online (Sandbox Code Playgroud)

如果你使用它分配,malloc那么free当你使用它时你会想要调用指针.

访问未初始化的指针会导致未定义的行为.在你的程序中,它导致了段错误,这是未初始化指针访问的一个非常常见的结果.