C语言数组相加

Python026

C语言数组相加,第1张

数组的下标是从0开始的,并非从1

因此假设定义数组int a[3],那么有效的数组元素为a[0] a[1] a[2]

楼组的代码里面的数组从1开始使用,输入3*3的数组会导致越界,踩内存发生错误

void fun(int arr[M][N])

{

int i,j

for(i=1i<=Mi++) //应该是for(i=0i<Mi++)

        for(j=1j<=Nj++)

        scanf("%d",&arr[i][j])

}

其他也按照这个修改就可以了

可以通过循环遍历数组中的每个元素,并进行累加。

累加的结果可以保存在变量中,需要注意,要保证变量足够保存累加结果,不会出现溢出。

参数为整型数组a,长度为l,对其元素实现累加并返回结果的函数可以写作

int sum(int *a, int l)

{

    int r = 0 // 存储累加结果。

    int i

    for(i = 0 i < l i ++)//遍历a

        r += a[i]//累加元素。

    return r//返回结果。

}

定义int arr[5] = {20, 10, 5, 39, 88}时,系统产生一个有5个元素的一维数组,5个元素分别是arr[0]到arr[4],对应的各个元素的地址分别是arr到arr+4。

当用sum(arr, arr + 5))计算数组总和时,sum是一个自定义函数,其内容是由编程人书写的。

如果这个函数是这样写:

int sum(int*a,int*b){

int*p,s

for(p=a,s=0p<bp++)

s+=*p

return s

}

就能得到正确的结果。

你说的“arr指向数组的首地址”是正确的,但“对arr+5后不是相当于arr[6]了吧”是错误的,因为arr+5是元素arr[5]的地址。但即使这样,如果自定义函数不加arr[5](像上面的例子),程序是能够得到正确的结果的。但是,如果不这样写,可能会造成这样数组下标越界。

这取决于函数sum是怎样写的。

最主要的,sum后面的arr与arr+5,只是两个参数,并不是加法的对象,这一点一定要搞清楚。