首页 > 解决方案 > 将字符与指针用于“单词数组”

问题描述

假设我有一个段落,我想拆分所有单词并将它们放入一个数组中。有什么更好的方法(对于这个例子,让我们假设 100 个单词的长度都在 20 个字符以下):

# character array
char our_array[100][20];
strcpy(our_array[0], "Hello";
strcpy(our_array[1], "Something");

或者:

# string (pointer) array
char *newer_string[100];
newer_string[0] = "Hello";
newer_string[1] = "Something";

为什么一个比另一个更可取?一种在实践中比另一种更常见吗?

标签: c

解决方案


版本 2 不会一次占用所有内存(如版本 1 那样)。您的字符串的长度也可以是任意的,您不受特定长度的限制(例如 20)。您可能会在版本 2 中获得少量内存开销(由于需要保存的指针),但这只有在至少几乎所有单词都被使用并且几乎所有单词都具有指定长度的情况下才真正成立。

一般来说,我总是推荐版本 2(字符串/字符指针数组)。在这个 1D-Array 中替换字符串比在 2D 版本中更容易。


推荐阅读