作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1536380989.A.3E6.html
1F:推 a29022792: 简单的解法就你从头跑一遍阵列复制一份 09/08 12:34
2F:推 eye5002003: 严谨做法:函式内复制一份阵列来使用(同上) 09/08 13:36
3F:→ eye5002003: 追求效率:离开函式前把阵列内容改回来 09/08 13:38
4F:推 eye5002003: 然而可读性跟架构维护比效率重要 09/08 13:42
5F:→ nobodycares: 复制真的最简单最直接 不要追求太炫炮的方法 09/09 01:09
6F:→ nobodycares: 如果你的程式行为只是要输出特定形式的资料 也根本不 09/09 01:10
7F:→ nobodycares: 用改到原始的资料 09/09 01:10
8F:→ nobodycares: 害怕复制成本太高 每次buffer分批复制或当下计算即可 09/09 01:12