C语言如何在函数中修改数组,并且原数组不改变

比如,main函数中定义了一个int a[100]={1,2,3}
然后写一个add函数,把a里面每一个值乘以2,然后全部加起来,返回这个和,但是原数组a里面所有值都没有变,这应该怎么写呢

#include <stdio.h>

int add(int *a)
{
    int i = 0;
    int sum = 0;
    for( i = 0; i < 100; i++)
    {
        sum += (*(a+i))*2;
    }
    return sum;    
}

int main(){
    int a[100]={1,2,3};
    //result
    printf("The add result is %d.\n",add(a));
    //print the array
    printf("{");
    for(int i = 0; i < 100; i++)
        printf("%d, ",a[i]);
    printf("}");
    return 0;
}

 

sum result is 12.

{1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }

Press ENTER or type command to continue

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-08
可以在子函数里型定义一个数组,用for循环赋值,改变新数组,不去改变原数组。
相似回答