簡體   English   中英

指向存儲在struct中的數組的指針

[英]Pointer to array stored in struct

我有一個結構x:

struct x {
    __s32 array[10];
};

如果我只有結構指針,該如何創建指向數組x->array指針?

直接方法是常用的方法,因為

 struct x * ptr = NULL;
 //allocation
 __s32 * otherPtr = ptr->array;  //array name decays to pointer to first member
 __s32 (*p) [10] = &(ptr->array); // pointer to whole array.

否則,還有另一種方法,但是對於特殊情況,請引用C11第6.7.2.1節“ 結構和聯合說明符”

指向經過適當轉換的結構對象的指針指向其初始成員(或者,如果該成員是位字段,則指向其所在的單元),反之亦然。 結構對象內可能存在未命名的填充,但在其開始處沒有。

因此,如果數組變量是結構的第一個成員(或如上例所示,則為唯一成員),則指向結構變量的指針(適當地轉換為適當的類型)也將指向數組成員的開頭變量。

在這種情況下,可以使用(__s32 (*)[10])

正確的方法是

__s32 *pointer = x->array

等於

__s32 *pointer = &(x->array[0])

暫無
暫無

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

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