[問題]請問傳遞陣列到函式如何不改變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