这两个声明有什么区别:
int *p = new int
; int *q
; 答案 0 :(得分:1)
int *p = new int;
*p = 8;
第一条语句将新变量p
声明为指向int
的指针,并使用new int
返回的地址对其进行初始化,该地址是用于存储{{ 1}}。第二条语句将值int
分配给8
指向的内存地址处的int。
p
现在,第一条语句不会初始化指针int *q;
*q = 8;
,因此指针将没有任何意义。然后,第二条语句尝试写入一个内存地址,该地址很可能不是允许进行此操作的地址,结果该程序将崩溃(最有可能出现分段错误)。
答案 1 :(得分:0)
int *p = new int;
这是一个声明。它声明类型为int *
的变量。变量的名称为p
。该变量使用表达式new int
进行复制初始化。
int *q;
这是一个声明。它声明类型为int *
的变量。变量的名称为q
。该变量是默认初始化的。