新指针和简单指针有什么区别

时间:2019-05-05 22:12:50

标签: c++ pointers dynamic-memory-allocation

这两个声明有什么区别:

  • int *p = new int;
  • int *q;

2 个答案:

答案 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。该变量是默认初始化的。