我在C:
中有这样的代码typedef struct _a1{
int d1;
} a1, *pa1;
我可以创建另一个指针并使用它:
a1 *pa2 = NULL;
pa2 = (a1*)malloc(sizeof(a1));
为“pa1”尝试相同操作失败。如何使用指针“pa1”?
答案 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? - 我完全同意。