无法为变量和指针赋值

Rob*_*man 13 c pointers

可能重复:
分段尝试在C中打印值时出错

我对C很新,但不知道为什么这个程序会破坏.如果我删除了与之相关的行,程序将编译并运行i,但如果我分配i,我不能再分配任何东西*ptr而不打破程序.

int main(void)
{
    int i;
    int *ptr;

    i = 2;
    *ptr = 5;
    printf("%d",*ptr);
}
Run Code Online (Sandbox Code Playgroud)

Kos*_*Kos 11

您将指针保留为未初始化的值.因此,当您取消引用它(*ptr)时,您将访问内存中的任意位置,从而导致分段错误.

ptr通过为ptr自己(不*ptr)分配变量的地址(如&i)或某些新分配的内存(如malloc(sizeof(int)))来指向某事物.