c - 指针数组的结构地址

标签 c arrays pointers struct

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

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

相关文章:

c - 如何找到某个字母在句子中的位置? (C语言编程)

c - 旁边的 Gtk 工具栏项目标签

arrays - Perl 对象中的数组数组

c - 具有数据结构的双指针运算

C: 被释放的指针未分配——调用 free 时

c++ - 如何交换二维数组的最大和最小成员索引

javascript - 如何循环 angular js 对象,并将对象添加到循环中

指针数组令人困惑

c - C 中的堆栈指针与堆指针

c++ - 指向指针的指针导致崩溃