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,
在上面的函数函数中。
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
中被认为是一种不好的做法,因为它可以隐藏指针正在使用的事实,并可能变得混乱。