[问题]请问传递阵列到函式如何不改变main的值

楼主: hunkchen2016 (我的鸡巴女友)   2018-09-08 12:29:47
开发平台(Platform): (Ex: Win10, Linux, ...)Ubntun
编译器(Ex: GCC, clang, VC++...) Linux Codelite
请问各位~~~
我想要传递一个简单的阵列到副程式,在副程式里面做简单的
运算之后又不想改变原本main的呼叫端的阵列~~~该怎么做
0 1 2 3 4 5 6 7 8 9 //原本main()的阵列内容
0 1 2 3 4 999 6 7 8 9 //把阵列传入函式之后的内容
0 1 2 3 4 999 6 7 8 9 //在main()里面再一次打印阵列内容
Press ENTER to continue...
发现呼叫函式之后,main的阵列也被改变了,我该怎么解决这个
问题呢????
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void arraytest1(int num[])
{
num[5]=999;
for(int i=0;i<10;i++)
{
printf("%d ",num[i]);
}
}
int main(int argc, char **argv)
{
int num[10]={0,1,2,3,4,5,6,7,8,9};
for(int i=0;i<10;i++)
{
printf("%d ",num[i]);
}
printf("\n");
arraytest1(num);
printf("\n");
for(int i=0;i<10;i++)
{
printf("%d ",num[i]);
}
printf("\n");
return 0;
作者: a29022792 (我猫厨我骄傲)   2018-09-08 12:34:00
简单的解法就你从头跑一遍阵列复制一份
作者: eye5002003 (下一夜)   2018-09-08 13:36:00
严谨做法:函式内复制一份阵列来使用(同上)追求效率:离开函式前把阵列内容改回来然而可读性跟架构维护比效率重要
作者: nobodycares (没人在乎)   2018-09-09 01:09:00
复制真的最简单最直接 不要追求太炫砲的方法如果你的程式行为只是要输出特定形式的资料 也根本不用改到原始的资料害怕复制成本太高 每次buffer分批复制或当下计算即可

Links booklink

Contact Us: admin [ a t ] ucptt.com