[英]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.