0

这可能很容易回答,但我似乎无法弄清楚它的语法。我需要的是一个二维数组,第一个元素是指向 CSTRING 的指针,第二个元素是一个计数器。

这样做的目的是基于线程号将单词列表线程化并传递给线程。就像它被定义为 char wordlists[100][10] 之类的东西(100 个单词和 10 个列表,每个线程 10 个总共 10 个)我最初可以用文件中的单词填充所有列表,然后将特定列表传递给要处理的线程,一旦线程加入主线程,我将重新填充与加入线程相关的单词列表,并用新单词重新启动线程。

总的来说,我没有得到制作二维指针数组的语法(第一个元素指针第二个只是一个计数器)。也可以只传递特定线程的单词开始的数组地址,所以我不需要传递 1000 个单词的整个 2D 数组吗?(这样我就可以传递存储 100 个字的线程的起始地址)

谢谢您的帮助!

编辑:: 如果你们对通过线程处理大字文件的类似方法有更好的建议,那么建议他们接受更多想法。

4

3 回答 3

0

您可能可以从阅读comp.lang.c FAQ的(相关部分,但我推荐全部)中受益。

对于任何接触 C(和类似 C 的语言)的人来说,这可能是必读的,而且令人难以置信地大开眼界(尤其是关于未定义语句的行为、空指针的值和使用,以及在你的情况下,指针和指针数组) .

于 2013-01-02T18:06:01.523 回答
0

我没有得到制作二维指针数组的语法

*的优先级低于[]。因此 wordlists 是一个指向 的数组char

char *wordlists[100][10];
于 2013-01-02T17:56:46.240 回答
0

声明一个二维指针数组(类型T):

T *array[width][height];

也可以只传递数组地址 [...] 所以我不需要传递 1000 个字的整个二维数组?

你甚至不能做任何其他事情。在 C 中,数组总是按指针传递,而不是按值传递。

于 2013-01-02T17:59:30.233 回答