结构定义中的结构指针

时间:2017-01-03 20:33:55

标签: c pointers

我在C:

中有这样的代码
typedef struct _a1{
  int d1;
} a1, *pa1;

我可以创建另一个指针并使用它:

a1 *pa2 = NULL;
pa2 = (a1*)malloc(sizeof(a1));

为“pa1”尝试相同操作失败。如何使用指针“pa1”?

1 个答案:

答案 0 :(得分:3)

如果不清楚, pa1不是指向a1结构的指针。你使用typedef做的只是定义两种类型 - 一种是指向结构的指针的类型(p1 = a1 *),另一种是结构本身(a1)。对我来说这没有问题:

#include <stdio.h>
#include <stdlib.h>

typedef struct _a1{
    int d1;
} a1, *p1;

int main() {
    p1 p2 = NULL;
    p2 = (p1)malloc(sizeof(a1));
    printf("%p\n",p2);
    return 0;
}

我建议阅读Is it a good idea to typedef pointers? - 我完全同意。