我正在尝试创建一个指向结构地址的指针数组,代码如下:
#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]。一个
。
关于c - 指针数组的结构地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34683133/