C 使用引用操作符访问结构层
如何使用for循环和reference操作符在数组中循环C 使用引用操作符访问结构层,c,C,如何使用for循环和reference操作符在数组中循环 for (i = 0; i < university->size; i++) { if (university->arr->MarkA <= 100) { sum += university->arr->MarkA; count++; } 我使用函数创建了一个大学数组 void build_U
for (i = 0; i < university->size; i++)
{
if (university->arr->MarkA <= 100)
{
sum += university->arr->MarkA;
count++;
}
我使用函数创建了一个大学数组
void build_Uni(FILE* in, Uni* university)
{
int i = 0;
stud temp;
char Name[100];
while (!feof(in))
{
fscanf(in, "%s%li%d%d%d", Name, &temp.ID, &temp.MarkA, &temp.MarkB, &temp.HW);
i++;
}
university->size = i;
rewind(in);
university->arr = (stud*)malloc(university->size * sizeof(stud));
if (university->arr == NULL) Get_Lost("Memory allocation failed!");
else for (i = 0; i < university->size; i++)
fill_Uni(in, university->arr + i);
}
void fill_Uni(FILE* in, stud* student)
{
char Name[100];
fscanf(in, "%s%li%d%d%d", Name, &student->ID, &student->MarkA, &student->MarkB, &student->HW);
student->name = (char*)malloc((strlen(Name) + 1) * sizeof(char));
if (student->name == NULL) Get_Lost("Error allocatig memory");
strcpy(student->name, Name);
}
如何使用for循环和引用在数组中循环
接线员
for (i = 0; i < university->size; i++)
{
if (university->arr->MarkA <= 100)
{
sum += university->arr->MarkA;
count++;
}
我想你指的是解引用操作符->
,但是引用和解引用与在数组中循环无关;这就是你的for循环的目的
我应该在哪里插入I
这:
for(i=0;isize;i++)
{
如果(大学->arr->马尔卡arr->马尔卡;
计数++;
}
}
应该是这样的:
for (i = 0; i < university->size; i++)
{
if (university->arr[i].MarkA <= 100)
{
sum += university->arr[i].MarkA;
count++;
}
}
for(i=0;isize;i++)
{
if(university->arr[i].MarkA arr[i].MarkA;
计数++;
}
}
如何使用for循环和引用在数组中循环
接线员
for (i = 0; i < university->size; i++)
{
if (university->arr->MarkA <= 100)
{
sum += university->arr->MarkA;
count++;
}
我想您指的是解引用操作符->
,但是引用和解引用与在数组中循环无关;这就是for循环的用途
我应该在哪里插入I
这:
for(i=0;isize;i++)
{
如果(大学->arr->马尔卡arr->马尔卡;
计数++;
}
}
应该是这样的:
for (i = 0; i < university->size; i++)
{
if (university->arr[i].MarkA <= 100)
{
sum += university->arr[i].MarkA;
count++;
}
}
for(i=0;isize;i++)
{
if(university->arr[i].MarkA arr[i].MarkA;
计数++;
}
}
关于您的原始问题,您应该按如下方式访问:
University university;
...
for (i = 0; i < university.size; i++) {
if (university.arr[i].MarkA <= 100)
{
sum += university.arr[i].MarkA;
count++;
}
...
}
关于您的原始问题,您应按如下方式访问:
University university;
...
for (i = 0; i < university.size; i++) {
if (university.arr[i].MarkA <= 100)
{
sum += university.arr[i].MarkA;
count++;
}
...
}
请显示所有类型声明。您所引用的数组不可见。我无意中未键入它们就发布了,现在我无法再发布90分钟。您不能回答这个问题吗?请创建一个小演示程序,设置您试图编写的代码的环境。我希望看到数组的定义stud,其地址写入
arr
或调用malloc()
。这与生成一个不同,但类似。旁注:引用运算符是&
(如:int i=0;int*p=&i;
)。解引用运算符是*
(如:int i=0;int*p=&i;int j=*p;
).但是,您使用的是结构解除引用运算符:->
(如:foo->bar
)请显示所有类型声明。您所引用的数组不可见。我无意中未键入它们就发布了,现在我无法再发布90分钟。您不能回答这个问题吗?请创建一个小演示程序,设置您试图编写的代码的环境。我希望看到数组的定义stud,其地址写入arr
或调用malloc()
。这与生成一个不同,但类似。旁注:引用运算符是&
(如:int i=0;int*p=&i;
)。解引用运算符是*
(如:int i=0;int*p=&i;int j=*p;
).但是,您使用的是结构解除引用运算符:->
(如:foo->bar
)这段代码很好,但在我看来,在他的问题中,他询问的for循环将位于一个函数内,该函数使用指向大学的指针struct@bigwillydos:对;不确定OP是在main中使用循环,还是在将univerity
作为指针传递到的函数中使用循环。相应地扩展了答案。此代码很好,但在我看来,在他的问题中,他询问的for循环将位于一个函数内,该函数的指针指向大学
struct@bigwillydos:对;不确定OP是在main中使用循环,还是在将univerity
作为指针传递到的函数中使用循环。相应地扩展了答案。