如何通过指向指针

时间:2016-08-17 18:23:21

标签: c structure

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 */
}

1 个答案:

答案 0 :(得分:3)

您需要取消引用第一个指针,然后使用指向成员的操作符:

(*pstu)->a

括号是必需的,因为指向成员的运算符的优先级高于取消引用运算符。

这两种情况都是一样的,因为stu **pstdu *代表相同的类型。正如评论中所提到的,在typedef中使用指针会被认为是不好的做法,因为它可以隐藏指针正在使用并且可能变得混乱的事实。