我对如何计算数组中数字的平均值和总和感到困惑,我可以生成数字,但是程序不断崩溃。对于数组和指针,我是新手,任何帮助/信息帮助。谢谢!
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int sum(int *myInts)
{
int sum=0,i;
for(i=0; i < 20; i++){
sum += myInts[i];
}
return sum;
}
int mean(int *myInts)
{
int mean=0,i;
for(i=20; i < 20; i++){
mean += myInts[i] / 20;
}
return mean;
}
int main(int i)
{
srand(time(NULL));
int *myInts[20];
for(i=0; i < 20 ; i++){
myInts[i] = rand() % 15;
}
printf("The array is: ");
for(i=0; i < 20; i++){
printf(" %d", myInts[i]);
}
printf("\nThe sum of the array is: %d", sum(myInts[20]));
printf("\nThe mean of the array is: %d", myInts[20],mean(myInts[20]));
getchar();
return 0;
}
答案 0 :(得分:3)
int *myInts[20];
在这里,您已经声明了一个指向main
函数中,您可以使用它,因为可以将整数转换为指针并返回,但是在调用该函数时便成为问题:
sum(myInts[20])
这会将偏移量为20的数组元素传递给函数。因为数组索引从0开始,所以大小为20的数组的索引从0到19。因此,您读取了数组的末尾,然后在函数中将此值视为指针并取消了引用。这会导致崩溃的原因是undefined behavior。
您改为声明一个int
数组:
int myInts[20];
并将数组传递给函数:
sum(myInts);