【发布时间】:2018-08-26 03:03:06
【问题描述】:
我正在尝试在堆上分配一个char 数组,然后创建一个指向它的指针:
char * head;
char * coolArray = new char[5];
这应该在堆上分配 5 位字符正确吗?
head = &coolArray;
由于&coolArray 是char ** 而无法执行此操作 ^?
我可以通过以下方式修复它:
head = *&coolArray;
但我不确定为什么会这样。
谁能解释这个指向堆上的东西的概念?
【问题讨论】:
-
5 个字节,而不是位。执行
head = &coolArray得到coolArray的地址,它是一个指向字符指针的指针,并试图将它分配给head,它只是一个字符指针。类型不匹配。*&coolArray引用然后尊重该值,最终将成为正确的分配类型head = coolArray。 -
一元
*和&在指针上是相反的/相反的 -&是“地址”运算符,而*是取消引用(又名“get a引用该地址的内容") 运算符。所以head = *&coolArray完全等同于head = coolArray。这与指向的东西是否在“堆”上完全无关。