簡體   English   中英

如何通過指針訪問結構成員

[英]How to access struct member via pointer to pointer

typedef struct {
    int a;
} stu, *pstdu;

void func(stu **pst);

int main() {
    stu *pst;
    pst = (stu*)malloc(sizeof(stu));
    pst->a = 10;
    func(&pst);
}

void func(stu **pstu) {
    /* how to access the variable a */
}

1)要通過傳遞指針地址來訪問結構變量a,在上述函數func中。

2)在以下情況下它將如何表現示例:

typedef struct {
    int a;
} stu, *pstdu;

void func(pstdu *pst);

int main() {
    stu *pst;
    pst = (stu*)malloc(sizeof(stu));
    pst->a = 10;
    func(&pst);
}

void func(pstdu *pstu) {
   /* how to access the variable a */
}

您需要先解除對第一個指針的引用,然后使用“指向成員的指針”運算符:

(*pstu)->a

需要括號,因為指向成員的指針運算符的優先級高於取消引用運算符的優先級。

這兩種情況都是相同的,因為stu **pstdu *代表相同的類型。 如注釋中所述,在typedef中使用指針被認為是不好的做法,因為它可以掩蓋指針在使用中並可能造成混淆的事實。

暫無
暫無

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

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