香港专业教育学院进行了广泛的研究,结果发现,通常的方法来初始化字符的二维数组二维数组
char *strings[2][50];
但是,这不是本一样,
什么这两行代码之间的区别是什么?我知道一个是指针,另一个不是。然而,实际上,如果你知道绑定的数组的大小,为什么你会使用一个指针呢?哪个代码更实用,为什么?谢谢。我想创建一个字符串数组。
香港专业教育学院进行了广泛的研究,结果发现,通常的方法来初始化字符的二维数组二维数组
char *strings[2][50];
但是,这不是本一样,
什么这两行代码之间的区别是什么?我知道一个是指针,另一个不是。然而,实际上,如果你知道绑定的数组的大小,为什么你会使用一个指针呢?哪个代码更实用,为什么?谢谢。我想创建一个字符串数组。
首先表达给你两个指针长度的字符串50
第二个给你两个字符串的长度,如果50
这一切都取决于你想与这些字符串做的:他们在已知高级的,固定的或可变的,你是否想对它们使用字符或字符串操作。
如果使用string.h中定义的任何字符串函数,最好使用指针表单,因为它们只将字符串指针作为参数。
字符的二维数组(A)与字符串数组(B)不同。
在第一行:char *strings[2][50];
您需要为这些字符分配内存。你只声明2个指针。
在第二行:char strings[2][50]
您已经分配了内存。
请小心,因为在任何这些情况下,您将获得以空字符结尾的字符串。在使用它们之前,您需要正确初始化这些值。另外,在第二种情况下,如果你犯了一个错误,第一个字符串可能会超过第二个字符串。
在现代C++中,最好使用std :: string和std :: array。它会让你的代码更安全。我建议如下:
第一种情况:std::array< std::array<char, 50>, 2> case1
是和数组
第二种情况:std::array< std::string, 2> case2
是一个字符串数组
你基本上问什么是指针之间的差值为'char'和'char'。 – LogicStuff
这些字符串是固定长度还是有上限? –
@EdHeal他们有一个固定的长度 – user859385