c++ - 试图创建一个指向动态分配的 char 数组的指针

标签 c++ arrays pointers char

我正在尝试在堆上分配一个 char 数组,然后指向它:

char * head;

char * coolArray = new char[5];

这应该在堆上分配 5 位字符正确吗?

head = &coolArray;

由于 &coolArraychar ** 而无法执行此操作 ^?

我可以通过以下方式修复它:

head = *&coolArray;

但我不确定为什么会这样。

谁能解释一下指向堆上某些东西的概念?

最佳答案

首先,首先,使用 std::string 处理字符串。

除了学习目的,通常不要使用原始数组、指针和new表达式。


This should allocate 5 bits

不,它分配了 5 个字节

字节是 C++ 中最小的可寻址内存单元。类型 char , unsigned charsigned 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/

相关文章:

c++ - std::unique_ptr<std::array<T,N>> 有用例吗

文件中的字符重复 - 不区分大小写

c - typedef char (*fptr1())(); 的用法

c++ - C++ 协方差返回类型的缺点是什么?

javascript - 按 3 的 block 对数组进行排序

返回数组上的 Javascript 垃圾收集

c++ - 对象的动态数组与指针的动态数组

C++:尝试将 fstream 作为参数传递时删除函数?

c++ - 同名函数

c++ - 使用性能分析工具的 Function Callgraph 选项时出现 Eclipse CDT 错误