C和程序设计方面的新手,因此在与数组和指针结合使用时,对结构来说我遇到了一段艰难的时期。我试图尝试创建一个结构,然后创建一个数组指针(指向该结构)重复10次。然后找到每个结构的平均值并打印出来。
在循环之前,一切似乎都能正常工作,并提供返回值0。
#include <stdio.h>
#include <stdlib.h>
typedef struct Tries {
float attempts1;
float attempts2;
float attempts3;
float aver;
}Try;
int main(int argc, char *argv[]) {
int i,size=10,at1,at2,at3;
Try** arrayofTries= malloc (sizeof(Try)*size);
for (i=0;i<size;i++){
arrayofTries[i]->attempts1= rand () %(900 - 700)+700;
arrayofTries[i]->attempts2= rand () %(900 - 700)+700;
arrayofTries[i]->attempts3= rand () %(900 - 700)+700;
at1= arrayofTries[i]->attempts1;
at2= arrayofTries[i]->attempts2;
at3=arrayofTries[i]->attempts3;
arrayofTries[i]->aver = (at1+at2+at3)/3;
printf ("The average of %d person is%f",i,arrayofTries[i]->aver);
}
return 0;
}
答案 0 :(得分:2)
const jennifer = await Person
.query()
.patch({firstName: 'Jenn', lastName: 'Lawrence'})
.where('id', 1234)
.returning('*')
.first();
的类型应为arrayofTries
,而不是Try *
Try **
因此,您所有的Try *arrayofTries = malloc (sizeof(Try) * size);
应该是简单的点->
。
答案 1 :(得分:0)
您正在分配指向Try
的指针,但没有分配指向元素本身的直接指针。看来您的意图是声明一个1D数组,而不是2D数组,因此您应该做的就是将arrayofTries
的类型从Try **
更改为Try *
。
另外,当您用完malloc
分配的内存时,free
会使用它:
free(arrayofTries);
arrayofTries = NULL;