簡體   English   中英

C typedef用於解引用固定大小的2D數組的指針

[英]C typedef for dereferencing a pointer to a fixed-size 2D array

如果我有一個指向固定大小的2D數組的指針,例如

char (*p)[4][4] = get_array();

有什么辦法可以將變量a聲明為

a = *p;

並具有a適當的是類型char[4][4]因此,我可以使用a[i][j]而不是(*p)[i][j]

如果p是指向4字符的數組的指針,則*p必須是4字符的數組的數組(類型char [4][4] )。 不幸的是,您不能真正將該類型用於其他變量(僅在定義此類數組時),甚至不能使用typedef 那是因為您不能分配給數組,而只能復制到它們。

幸運的是,當數組自然衰減到指向其第一個元素的指針時,一個4字符的數組將隨后衰減到一個指向4字符的數組的指針。

也就是說,表達式*p等效於char (*)[4] ,必須為a的類型:

char (*a)[4];

a是類型char [4][4]的數組。

有什么辦法可以將變量a聲明為

a = *p;

不,您不能像這樣初始化數組,並且數組不可分配。

相反,您應該執行以下操作:

memcpy (a, *p, sizeof(a));

然后可以使用a[i][j]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM