作者hunkchen2016 (我的雞巴女友)
看板C_and_CPP
標題[問題]請問傳遞陣列到函式如何不改變main的值
時間Sat Sep 8 12:29:47 2018
開發平台(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;
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.98.247
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1536380989.A.3E6.html
推 a29022792: 簡單的解法就你從頭跑一遍陣列複製一份 09/08 12:34
推 eye5002003: 嚴謹做法:函式內複製一份陣列來使用(同上) 09/08 13:36
→ eye5002003: 追求效率:離開函式前把陣列內容改回來 09/08 13:38
推 eye5002003: 然而可讀性跟架構維護比效率重要 09/08 13:42
→ nobodycares: 複製真的最簡單最直接 不要追求太炫砲的方法 09/09 01:09
→ nobodycares: 如果你的程式行為只是要輸出特定形式的資料 也根本不 09/09 01:10
→ nobodycares: 用改到原始的資料 09/09 01:10
→ nobodycares: 害怕複製成本太高 每次buffer分批複製或當下計算即可 09/09 01:12