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
,但它没有用。 (我之所以这样,是因为我对链表更熟悉。)
答案 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);
}
}
}