C++:新的,记忆理解问题

nil*_*ll9 1 c++ memory new-operator

为什么这不起作用:

小片1:

int *a = new int[6];
(*a)[0]=1;

这是有效的

摘录2:

int myint = 0;
int *ptr = &myint;
*ptr=1;

我知道如果我a[0]=1在代码片段1中使用它会起作用.但对我来说没有任何意义,对我而言,它看起来a[0]=1意味着:将值1置于地址[0].换句话说,我把值作为记忆.相反,(*a)[0]=1对我使用哪种方法更有意义:将值1放在a [0]指向的值字段中.

谁能形容这种差异?

Cog*_*eel 11

代码片段1应该是:

int *a = new int[6];
a[0]=1;
Run Code Online (Sandbox Code Playgroud)

这是因为a[0]相当于*(a+0).