[英]Accessing and assigning values in each part of the struct in an “array” of structs?
[英]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.