声明并初始化指针到指针的char-array
Declaration and initialize pointer-to-pointer char-array
关于指针指向指针,我想知道以下内容是否ok:
char** _charPp = new char*[10];
for (int i = 0; i < 10; i++)
´ _charPp[i] = new char[100];
也就是说,如果我想要一个指向10个字符数组的指针。
问题是-现在可以了吗?还是我必须对每个字符数组进行某种初始化?那么,我该怎么做呢?
我稍后将在程序中用某些字符填充这些数组,但我怀疑数组应该在初始化之前使用值,例如"0"
是的,看起来很合适,
int arraySizeX = 100;
int arraySizeY = 100;
char** array2d = new char*[arraySizeX] // you've just allocated memory that
// holds 100 * 4 (average) bytes
for(int i = 0; i < arraySizeX; ++i)
{
array2d[i] = new char[arraySizeY] // you've just allocated a chunk that
//holds 100 char values. It is 100 * 1 (average) bytes
memset(array2d[i], 0, arraySizeY) // to make every element NULL
}
在后面的程序中,我将用特定的字符填充这些数组但我怀疑数组之前应该用值初始化如"0"
不,c++中没有"默认值"。您需要将指针赋值为0以使其为空,或者使用memset()对数组执行此操作。
Netherwire的答案正确地显示了如何将字符初始化为0
。我来回答你问题的第一部分。
还不需要初始化它们。只要在读取字符之前初始化它们,它就是正确的。
根据代码的结构和使用数组的方式,这样做可能更安全,因为如果在初始化之前最终读取其中的一些数组,则很难找到错误。
另外,请记住稍后delete[]
您已分配的数组。或者更好的是,考虑使用std::vector
代替(也可能使用std::string
,这取决于您使用这些数组的目的。)
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 使用指针初始化 char 数组或字符串 C++
- char array[sizeof(Message)]; vs char* array = new char[sizeo
- Picky STD :: String Char Array构造函数
- getline() and char array
- 当使用Char Array和= Operator启动字符串时,该功能被调用
- 如何在 C++ 中安全地为 char *array 重新分配内存(它适用于自定义字符串类)
- 使用 char*array 存储条形图的条形图,以便我可以动态制作它并作为字符串返回
- "static const char array"可以在 C 语言上包含变量成员吗
- 将Char-Array铸造成C 的POD阵列
- C++ 2D Char array
- 家庭工作:将一个文件读取到指向指针char(char**)的指针中
- cython char array[]中的c++标头包装声明convert
- 从Cocos2dx的指针char向量写入sqlite文件
- 将char复制到struct指针char
- Char Array VS Char *
- 使用std::cin对出界char-Array进行错误检查
- 声明并初始化指针到指针的char-array
- std::string vs char array for static const
- C++ char* array