我正在尝试在堆上分配一个 char
数组,然后指向它:
char * head;
char * coolArray = new char[5];
这应该在堆上分配 5 位字符正确吗?
head = &coolArray;
由于 &coolArray
是 char **
而无法执行此操作 ^?
我可以通过以下方式修复它:
head = *&coolArray;
但我不确定为什么会这样。
谁能解释一下指向堆上某些东西的概念?
最佳答案
首先,首先,使用 std::string
处理字符串。
除了学习目的,通常不要使用原始数组、指针和new
表达式。
” This should allocate 5 bits
不,它分配了 5 个字节。
字节是 C++ 中最小的可寻址内存单元。类型 char
, unsigned char
和 signed char
,以及 C++17 及更高版本 std::byte
, 都是保证的字节大小。每个字节的位数通常为 8,至少为 8,但可以更大,由 CHAR_BIT
给出。来自 <limits.h>
的常量标题。
head = &coolArray;
随便写
head = coolArray;
这会将指针值(指针变量 coolArray
中的值)分配给指针变量。
head = *&coolArray;
通常,对于任何变量 v
, 表达式 &v
为您提供指向该变量的指针。
取消引用该指针,*&v
, 表示同一个变量。所以你可以写 v
相反。
关于c++ - 试图创建一个指向动态分配的 char 数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52022862/