Printf不显示并返回值3221225477

时间:2019-01-29 02:39:05

标签: c arrays pointers struct

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;
}

2 个答案:

答案 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;