gpt4 book ai didi

c++ - 将 char** 转换为 char[x][x]

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:53 24 4
gpt4 key购买 nike

在 C++ 中,我希望我的类有一个 char** 字段,该字段将根据用户输入调整大小。基本上,我想做这样的事情 -

char** map;
map = new char[10][10];

10 是任何整数。我收到一条错误消息,提示无法将 char*[10] 转换为 char**。为什么它不能在我能做的时候做 -

char* astring;
astring = new char[10];

?

最佳答案

因为数组不是指针。数组衰减为指向它们第一个元素的指针,但这只发生在第一级:二维数组衰减为指向一维数组的指针,但仅此而已——它不会衰减为指向指针。

operator new[] 允许分配一个大小仅在运行时已知的动态数组,但它只允许您分配一维数组。如果要分配动态二维数组,需要分两步进行:首先分配一个指针数组,然后为每个指针分配另一个一维数组。例如:

char **map = new char*[10];  // allocate dynamic array of 10 char*'s
for(int i = 0; i < 10; i++)
map[i] = new char[10]; // allocate dynamic array of 10 char's

然后要释放数组,您必须反向释放所有内容:

for(int i = 0; i < 10; i++)
delete [] map[i];
delete [] map;

关于c++ - 将 char** 转换为 char[x][x],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com