初始化和导航char **

Initializing and Navigating a char**

本文关键字:char 导航 初始化      更新时间:2023-10-16

好吧,请考虑此代码:

char** pool = new char*[2];
pool[0] = new char[sizeof(char)*5];
据我所知,这为2个char指针的数组创建了一个指针。然后,第二行将这2个字符指针中的第一个设置为5个字符的阵列中的第一项。如果我错了,请纠正我。

如果我没有错:

  1. 我将如何初始化所有这些字符?
  2. 我将如何更改特定的字符?例如,将最后一个字符设置为每个数组中的null。
据我所知,这为2个char指针的数组创建了一个指针。[...]
char** pool = new char*[2];

否,该行创建了指针指针的指针。右侧的表达式为角色创造了2个指针的数组。您可以用一系列指针将其初始化为双重指针,因为右侧将腐烂成双指针。

第二行将这2个字符指针中的第一个设置为5个字符的阵列中的第一项。[...]

pool[0] = new char[sizeof(char)*5];

您是什么意思是"这两个字符中的第一个"。您仅分配在该行上的一个指针。

我将如何初始化所有这些字符?

使用循环通过指针迭代并为其分配有效的内存。

我将如何更改特定的字符?例如,将最后一个字符设置为每个数组中的NULL

for (char** p = pool; p != (pool + 2); ++p)
{
    *p = new char[/* amount of chars */];
    (*p)[/* amount of chars */] = '';
}

,但这是一个完整的混乱。使用字符串向量要容易得多:

std::vector<std::string> pool;