我正在尝试创建一个指向结构地址的指针数组,下面是代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct poo {
int a,b;
} poo;
int main() {
struct poo *adres,poo;
poo.a = 2;
我想知道为什么这样做:
adres = &poo;
printf("%d\n",adres->a);
当我尝试建立一个指针数组不起作用时:
adres = malloc(4*sizeof(*adres));
adres[0] = &poo;
printf("%d\n",adres[0]->a);
错误:
poo.c: In function ‘main’: poo.c:23:13: error: incompatible types when
assigning to type ‘struct poo’ from type ‘struct poo *’
adres[0] = &poo;
^ poo.c:25:26: error: invalid type argument of ‘->’ (have ‘struct poo’)
printf("%d\n",adres[0]->a);
^
最佳答案
因为adres[0]
不是指针。如果要复制结构poo
然后执行adres[0] = poo
,就这么简单。
然后,由于adres[0]
不是指针,因此您需要使用带点的常规结构访问语法来访问结构中的成员,例如adres[0].a
。
关于c - 将地址构造到指针数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34683133/