指针时无法使用箭头符号访问结构数据

时间:2018-11-10 18:38:21

标签: c pointers struct

我创建了一个结构体数组,但遇到BAD_ACCESS错误。当我将所有内容都切换为点表示法时,它工作正常,为什么?

结构

typedef struct data{
    int num;
}data;

主要

int main(void){
  // This works
  data data[4];
  data[0].num = 10;
  printf("Number is = %d\n", data[0].num);

  // This does not work
  data *data[4];
  data[0]->num = 10;
  printf("Number is = %d\n", data[0]->num);

1 个答案:

答案 0 :(得分:4)

// This does not work
data *data[4];
data[0]->num = 10;
printf("Number is = %d\n", data[0]->num);

由于data是四个指针的数组,因此data[0]是这四个指针中的第一个。但是它指向什么呢?由于您还没有执行data[0] = malloc(sizeof(struct data));之类的操作,因此它没有特别指出-未初始化的垃圾。尝试写入指针指向的内容会导致严重的访问错误,这并不奇怪。

在取消引用指针之前,需要使指针实际指向某物。