hayulin 发表于 2018-4-10 17:43:00

编译通过运行出问题,请高手指教!!

# include <stdio.h>
int add (int array[],int n);
int main()
{
        int arr[]={0,1,2,3,4,5,6,7,8,9};
        int size=sizeof(arr)/arr;
        printf("%d\n\n",add (arr,size));
        return 0;
}

int add (int array[],int n)
{
        int sum=0;
        int i;
        for(i=0;i<n;i++)
        {
                sum+=array;
        }
        return sum ;
}





BngThea 发表于 2018-4-10 18:01:27

代码本身没有问题
可能是已经有一个该程序在跑或者编译器的问题

风过无痕丶 发表于 2018-4-10 18:14:28

# include <stdio.h>
int add(int array[], int n);
int main()
{
        int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
        //int size = sizeof(arr) / arr; 按照我的理解这里也应该取的是大小,而不是值~ 除以0没意义啊~
        // 这么写 你的数据还会越界。。
        int size = sizeof(arr) / sizeof(arr);
        printf("%d\n\n", add(arr, size));

        return 0;
}

int add(int array[], int n)
{
        int sum = 0;
        int i;
        for (i = 0; i<n; i++)
        {
                sum += array;
        }
        return sum;
}

hayulin 发表于 2018-4-10 18:34:13

谢谢!!!
是越界的问题,我把第六行改为

int size=sizeof(arr)/sizeof(arr);
就OK了!!
页: [1]
查看完整版本: 编译通过运行出问题,请高手指教!!