用C ++初始化指针!

时间:2016-08-13 06:26:47

标签: c++ pointers

为什么这段代码有效?应该给出错误。

int* p;
*p=34;
cout<<*p<<endl;

int * p应该只为指针本身分配内存。指针的值将是一些内存地址,但该地址的内存尚未分配。

2 个答案:

答案 0 :(得分:4)

在C ++中,默认情况下指针不会初始化为NULL。程序每次运行时都会显示未定义的行为,有时可能会出现分段错误。

答案 1 :(得分:-2)

当你写int * p = new int; * p指向的地址,其大小为“int”。 当你写* p = 34时,地址的值为34;

你可以像一个变量(一个指向变量)一样修改一个没有“new”的指针。使用“new”只是一种分配内存的手动方式。我们的编译器非常聪明。但请记住它不是很好的做法。某些编译可能会抛出错误。始终使用“new”来避免错误,并在完成后删除您的分配。