为什么这段代码有效?应该给出错误。
int* p;
*p=34;
cout<<*p<<endl;
int * p应该只为指针本身分配内存。指针的值将是一些内存地址,但该地址的内存尚未分配。
答案 0 :(得分:4)
在C ++中,默认情况下指针不会初始化为NULL。程序每次运行时都会显示未定义的行为,有时可能会出现分段错误。
答案 1 :(得分:-2)
当你写int * p = new int; * p指向的地址,其大小为“int”。 当你写* p = 34时,地址的值为34;
你可以像一个变量(一个指向变量)一样修改一个没有“new”的指针。使用“new”只是一种分配内存的手动方式。我们的编译器非常聪明。但请记住它不是很好的做法。某些编译可能会抛出错误。始终使用“new”来避免错误,并在完成后删除您的分配。