初始化和导航char **
Initializing and Navigating a char**
好吧,请考虑此代码:
char** pool = new char*[2];
pool[0] = new char[sizeof(char)*5];
据我所知,这为2个char指针的数组创建了一个指针。然后,第二行将这2个字符指针中的第一个设置为5个字符的阵列中的第一项。如果我错了,请纠正我。
如果我没有错:
- 我将如何初始化所有这些字符?
- 我将如何更改特定的字符?例如,将最后一个字符设置为每个数组中的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;