C++ 中的 2D 字符数组
2D array of Characters in c++
>我做了广泛的研究,发现初始化 2D 字符数组的常用方法是
char *strings[2][50];
但这不和
, char strings[2][50]; //not a pointer.
这两行代码有什么区别?我知道一个是指针,另一个不是。但是,实际上,如果您知道数组绑定([boundX][boundY])
的大小,为什么还要使用指针呢?哪种代码更实用,为什么?谢谢。
编辑:我正在尝试创建一个字符串数组。
第一个表达式为您提供两个指向长度为 50 的字符串的指针。
如果长度为 50,则第二个给你两个字符串。
这完全取决于您要对这些字符串做什么:它们是高级、固定还是可变的已知,您想对它们使用字符还是字符串操作。
如果使用 string.h 中定义的任何字符串函数,最好使用指针形式,因为它们只接受字符串指针作为参数。
字符 (A) 的 2D 数组与字符串数组 (B) 不同。
在第一行:char *strings[2][50];
您需要为这些字符分配内存。您只声明了 2 个指针。
在第二行:char strings[2][50]
您已经在分配内存。
请注意,因为在任何这些情况下,您都将获得以 null 结尾的字符串。在使用值之前,您需要正确初始化这些值。此外,在第二种情况下,如果您犯了错误,第一个字符串可能会溢出第二个字符串。
在现代C++中,最好使用 std::string 和 std::array。它将使您的代码更安全。我建议如下:
第一种情况:std::array< std::array<char, 50>, 2> case1
is 和数组数组
第二种情况:std::array< std::string, 2> case2
是一个字符串数组
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 按字符值访问int数组
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- C++ 带结构的数组字符
- 数组字符包含量超出预期
- 读取文件并添加到数组字符
- 如何在Qt中更改或替换数组字符
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?
- 井字棋数组字符错误
- 分割数组字符