2016-03-05 120 views
-4

香港专业教育学院进行了广泛的研究,结果发现,通常的方法来初始化字符的二维数组二维数组

char *strings[2][50]; 

但是,这不是本一样,

​​

什么这两行代码之间的区别是什么?我知道一个是指针,另一个不是。然而,实际上,如果你知道绑定的数组的大小,为什么你会使用一个指针呢?哪个代码更实用,为什么?谢谢。我想创建一个字符串数组。

+2

你基本上问什么是指针之间的差值为'char'和'char'。 – LogicStuff

+0

这些字符串是固定长度还是有上限? –

+0

@EdHeal他们有一个固定的长度 – user859385

回答

-1

首先表达给你两个指针长度的字符串50

第二个给你两个字符串的长度,如果50

这一切都取决于你想与这些字符串做的:他们在已知高级的,固定的或可变的,你是否想对它们使用字符或字符串操作。

如果使用string.h中定义的任何字符串函数,最好使用指针表单,因为它们只将字符串指针作为参数。

-1

字符的二维数组(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是一个字符串数组