数组C中数字的总和和平均值

时间:2018-10-22 20:16:57

标签: c

我对如何计算数组中数字的平均值和总和感到困惑,我可以生成数字,但是程序不断崩溃。对于数组和指针,我是新手,任何帮助/信息帮助。谢谢!

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

1 个答案:

答案 0 :(得分:3)

int *myInts[20];

在这里,您已经声明了一个指向指针的数组,而不是一个int数组。在main函数中,您可以使用它,因为可以将整数转换为指针并返回,但是在调用该函数时便成为问题:

sum(myInts[20])

这会将偏移量为20的数组元素传递给函数。因为数组索引从0开始,所以大小为20的数组的索引从0到19。因此,您读取了数组的末尾,然后在函数中将此值视为指针并取消了引用。这会导致崩溃的原因是undefined behavior

您改为声明一个int数组:

int myInts[20];

并将数组传递给函数:

sum(myInts);