2010-09-24 62 views
2

我無法弄清楚如何聲明一個指向void*數組的數組的指針。 (我不能使用STL容器等,因爲它是一個嵌入式系統。)聲明一個指向二維數組的void *

我有一些數據,我試圖在一個結構中組合在一起。大多數內置的數據類型,但是這兩個數組是。第一個,

char *testpanel_desc[] = {...}; 

不是問題。在我的結構我存儲指向數組像這樣:

struct MyStruct 
{ 
    ... 
    char** panelDesc; 
}; 

但後來有這樣一條:

void *testpanel_pointers[][4] = {...}; 

,我不能想出一個方法來定義我的結構中的一員我可以分配這個數組。 void***由於原始聲明中的4而不起作用。

回答

4

讓生活有點simplier和使用typedef

identity<void*[4]>::type *panelDesc; 

或者相當於

typedef void *type[4]; 
type *panelDesc; 

我懷疑你知道下面的手段,但我只想說這是相當於太

void *(*panelDesc)[4]; 

請注意,基於類型,它不是「一個指向void *的二維數組的指針」,很像char**不是「指向char *的一維數組的指針」。但保持你在一維情況下(指向第一個元素)的方式,這是你需要的聲明。

+0

謝謝。我沒有在這方面考慮問題(指向第一個元素),儘管當你仔細想想它時它是非常有意義的。 – dandan78 2010-09-25 13:19:57

0
void *testpanel_pointers[1][4] = {}; 

void* (*p)[1][4]; //pointer to a two dimensional array of pointers to void 
p = &testpanel_pointers;