2013-01-02 184 views
0

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

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

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

感谢您的帮助!

编辑::如果你们有类似的方式来处理大字文件通过线程有任何更好的建议,然后建议他们打开更多的想法。

+0

你是否试图在你的线程上分割数组?原来的表格定义可能会对你的问题有所帮助,因为我认为这不会像你第一次想到的那样复杂。 – WhozCraig

+0

@WhozCraig是的我想创建10个100字的列表,给每个线程1个列表,并在他们加入主线程后重新填充他们的列表,并重新启动它们,直到字文件被完全读取。 –

+0

好的。是你想要分割并发送给来自更大(更重要的是**完整**)列表的线程的*源*? – WhozCraig

回答

0

我不得到的语法用于使指针的2D阵列

*具有比[]一个优先级低。因此,单词列表是指向char的指针数组的数组。

char *wordlists[100][10]; 
0

要声明指针的2D阵列(键入T):

T *array[width][height]; 

而且是有可能通过只阵列地址[...]所以不需要传递整个1000字的二维数组?

你什么都做不了。在C中,数组总是按指针传递,而不是按值传递。

0

您可能会从阅读comp.lang.c FAQ(的相关部分,但我建议整体)中受益。

对于任何接触C(和类C语言)的人来说,这可能是一个强制性阅读,它是令人难以置信的大开眼界(特别是关于未定义的语句行为,空指针的值和使用,以及在你的情况下,指针和指针数组)。

+0

或删节版本,至少:http://www.faqs.org/faqs/C-faq/abridged/ –