繁体   English   中英

访问结构内部的数组元素(属于结构数组的一部分)(在C中)

[英]Accessing an array element inside a struct (which is part of an array of structs) (in C)

我想创建一个结构数组,尽管没有。 从文件中读取数组中的结构/从用户输入。

我声明一个结构:

struct student{
    char name[16];
    int *available;
    int sum;
};

typedef struct student ST;

我为结构数组分配内存(获取大小的输入后):

ptr = (ST*)calloc(lines, sizeof(ST));

我还为每个结构中的每个数组分配空间(使用循环):

ptr->available = (int*)calloc(lines, sizeof(int));

现在-我想将值放入这些数组中。 如何达到每个要素?

我试过了:

*((ptr+i)->(available+j)) = 1;

但是编译器告诉我: error: expected identifier before '(' (i和j是我使用的索引,i表示第i个结构,j表示数组的第j个元素)。

我究竟做错了什么?

考虑使用数组索引符号以提高可读性:

ptr[i].available[j] = 1;

(使用显式指针算法的等效语法是*((ptr + i)->available + j) = 1; )。

忘记*(ptr + idx)表示法; 它被用来使初学者感到困惑,而不是在“真实代码”中。 但是,如果必须使用它,则:

*((ptr+i)->available+j) = 1;

但是使用:

ptr[i].available[j] = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM