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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

参考技术A 可以在子函数里型定义一个数组,用for循环赋值,改变新数组,不去改变原数组。

c语言如何通过函数来改变已经赋初值的全局变量的值?

定义全局变量并赋初值,如何通过函数来改变全局变量的值,全局变量在后面的函数中要用到。
我要实现的是通过一个函数改变变量的值,将改变后的值传给另一个函数,两个函数之间不能调用

直接在函数里使用全局变量就可以了。
因为是全局变量,所以一般就不用传参了。
#include<stdio.h>

int num=0;//全局变量

void Add()

num++;


void ToZero()

num=0;


int main()

//num=0;
Add();
//num=1;
Add();
//num=2;
ToZero();
//num=0;

晕,为什么要用改变全局变量的方法,用函数返回值return不就行了嘛,在一个函数中改变的值通过return返回到主函数的一个变量中,再引用到下个函数就行了
参考技术A 直接在函数里使用全局变量就可以了。
因为是全局变量,所以一般就不用传参了。
#include<stdio.h>

int num=0;//全局变量

void Add()

num++;


void ToZero()

num=0;


int main()

//num=0;
Add();
//num=1;
Add();
//num=2;
ToZero();
//num=0;

晕,为什么要用改变全局变量的方法,用函数返回值return不就行了嘛,在一个函数中改变的值通过return返回到主函数的一个变量中,再引用到下个函数就行了啊!
参考技术B 晕,为什么要用改变全局变量的方法,用函数返回值return不就行了嘛,在一个函数中改变的值通过return返回到主函数的一个变量中,再引用到下个函数就行了啊! 参考技术C 直接在函数里使用全局变量就可以了。
因为是全局变量,所以一般就不用传参了。
#include<stdio.h>

int num=0;//全局变量

void Add()

num++;


void ToZero()

num=0;


int main()

//num=0;
Add();
//num=1;
Add();
//num=2;
ToZero();
//num=0;
参考技术D 别在函数中使用与全局变量名字相同的变量就OK了,其他的都一样的.
当全局变量在函数中与局部变量名字相同时,自动屏蔽全局变量

以上是关于C语言如何在函数中修改数组,并且原数组不改变的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何通过函数来改变已经赋初值的全局变量的值?

关于forEach方法能否改变数组中每一项的值

C语言如何在子函数中对主函数中的二维数组值进行修改? 二维数组已经在主函数中用动态数组分配了空间。

JavaScript中常见数组方法原数组改不改变

不改变原数组的方法

java数组作为参数传入函数怎么让他不变化