c – 为什么可以为未初始化的指针分配整数值

当我这样做时,它完美打印出“2”.

int main()
{
    int *p;
    int x = 2;

    *p = x;

    cout << *p;

}

但是当我第一次将* p初始化为null时,程序崩溃了.

int main()
{
    int *p=0;
    int x = 2;

    *p = x;

     cout << *p;

}

我想问一下第一个程序首先成功运行的是什么,为什么可以将值分配给未初始化的指针?

[编辑]我的问题实际上与我过去的考试问题有关.您可以勾选多个答案,似乎(b)& (c)两者都是正确的.但现在我知道(c)作品是否完全归功于运气.

enter image description here

最佳答案
第一个程序受到未定义的行为.它似乎有效,但不幸的是,看似理智的行为也是未定义的行为.

如果程序取消引用未初始化的指针,则不要指望程序始终正常工作.

转载注明原文:c – 为什么可以为未初始化的指针分配整数值 - 代码日志