一个函数返回值的问题

代码:有一个4*4的矩阵,设计函数计算矩阵主对角元素之和,将和存放在数组第一个元素,返回主函数之后输出这个和


#include 
#include 
void ArraySum(int nArray[][4],int n)
{
    int i,sum =0;
    for(i=0;i<=n;i++)
        sum +=nArray[i][i];
    nArray[0][0]=sum;
}
main()
{
    int nArray[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    ArraySum(nArray,4);
    printf("%d",nArray[0][0]);
}

问题:我想知道这个主函数是没有返回值的,是个void,函数运行结束里面的值全部消失,请问这个函数是如何做到返回和的

数组作为函数参数是对原数组进行操作,函数最后把sum赋给了narry[0][0],修改了原始值。

这是将结果写入了nArr[0][0]
以破坏数组数据为代价,进行返回的。