【发布时间】:2015-07-17 06:57:02
【问题描述】:
假设我有以下代码:
char* array[1000]; // An array containing 1000 char*
// So, array[2] could be 'cat', array[400] could be 'space', etc.
现在,我如何将这个数组展平为一维?是否可以这样做,使得 new_1D_array[2] 仍然是 'cat',new_1D_array[400] 仍然是 'space' 等等?
【问题讨论】:
-
您需要知道数组第二维的大小,因为上面没有指定 - 除非它们包含 C 字符串,在这种情况下可以展平,但可能不保留根据需要对列表进行相同的索引。
-
假设每个 char* 的长度最多为 10。这算作第二维吗?
-
“最多 10 个”表示它可能是一个锯齿状数组。您需要 100% 确定每个元素的大小,而不是最多将其视为真正的二维数组。如果长度为 8、6、7、9、5、10 等。展平变得很困难,除非你只是停在 C 字符串 NUL char 的末尾,如果没有遇到,则停在 10 (在这种情况下,你需要在新数组中以某种方式终止它。)
-
嗯,没有。
char* array[1000]已经是一维字符指针数组。 -
那么,既然 char* array[1000] 已经是一维的,这是否意味着它使用单个连续的内存块?