我正在尝试创建一个指向结构地址的指针数组,下面是代码:

#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/

10-11 21:51