带指针的struct数组

时间:2018-04-19 22:21:32

标签: c pointers struct

typedef struct line {
  int a;
  int b;
} line;

int main() {
  line *v;
  int c, d, j;
  char a;
  int i;
  scanf("%d", &n)
  for (i = 0; i < n; i++) {
    scanf("%c", &a);
    v = (line*) malloc(n * sizeof(line));
    if (a == '+') {
      scanf("%d %d", &v[j]->a, &v[j]->b);
    }
  }

我想创建一个包含struct信息的数组,然后在我的函数中使用该信息。但我得到了一些错误,我不知道我是否使用了指针。

我尝试使用v[j].a,但它没有用。 (我之所以这样,是因为我对链表更熟悉。)

2 个答案:

答案 0 :(得分:1)

使用&(v[j].a)代替&amp;((v + j) - &gt; a)。数组的名称是指向第一个元素的指针。所以v [j]是struct line类型的元素。要获得其中一个字段,请使用 .a

另外,请检查代码是否有其他错误,因为某些变量未初始化。

答案 1 :(得分:0)

首先,你在每次迭代时都会新建一个内存,而前一个内存将变得不可用。

从程序的逻辑中摘要

typedef struct line {
  int a;
  int b;
} line;


int main(void) {
  line *v;
  int c, d, j;
  char a;
  int i,n;

  scanf("%d", &n);
  v = malloc(n * sizeof(line));
  if(v == NULL) return -1;
  for (i = 0; i < n; i++) {
    scanf("%c", &a);
    if (a == '+') {
      scanf("%d %d", &v[j].a, &v[j].b);
    }
  }
}