C++ 中的 2D 字符数组

2D array of Characters in c++

本文关键字:数组 字符 2D 中的 C++      更新时间:2023-10-16

>我做了广泛的研究,发现初始化 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是一个字符串数组