繁体   English   中英

Printf不显示并返回值3221225477

[英]Printf not showing and return value 3221225477

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

arrayofTries的类型应为Try * not Try **

Try *arrayofTries = malloc (sizeof(Try) * size);

因此,所有->应该都是简单的点.

您正在分配一个指向Try指针,但没有分配到元素本身的直接指针。 看来您的意图是声明一个1D数组,而不是2D数组,因此您应该做的是将arrayofTries的类型从Try **更改为Try *

另外,当您完成使用malloc分配的malloc ,请free它:

free(arrayofTries);
arrayofTries = NULL;

暂无
暂无

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

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