0
int* p_bob = new int;

*p_bob = 78;

上面的代码对我来说很有意义。我使用取消引用操作来分配新内存并分配值 78。

int* p_dynint = new int[10];
*p_dynint[2] = 12;

然而,这没有任何意义。如果我尝试在 p_dynint[] 上使用取消引用运算符,则会收到错误消息。为什么数组会有所不同?

4

3 回答 3

4

*p_bob = 78;这将值分配给78指向的内存p_bob(它表示一个int)。

p_dynint[2] = 12;只需访问第三个元素。

p_dynint[2]实际上等价于*(p_dynint+2)

于 2012-06-12T14:04:09.060 回答
2

p_dynint[2]相当于*(p_dynint + 2)。取消引用隐含在[]运算符中。

于 2012-06-12T14:04:56.377 回答
-1

这样做没有真正的问题:

int* p_dynint=new int[10];
//write first element
*p_dynint=10;
//write second element
*(p_dynint+1)=20;
//write three elements to std::cout
std::cout<<p_dynint[0]<<p_dynint[1]<<p_dynint[10]<<std::endl;

这个例子也突出了数组的一个问题。你可以读写任何东西。生成的输出p_dynint[10]是一个 int,但它的值只是转换为 int 的接下来的几个字节。

如果可能的话使用容器(为了进一步推理阅读这个

于 2012-06-12T14:22:13.437 回答