| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 572 人关注过本帖
标题:刚学到指针和数组,有个问题
只看楼主 加入收藏
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
结帖率:0
收藏
 问题点数:0 回复次数:9 
刚学到指针和数组,有个问题
自己定义一个函数,读取main函数定义的数组,如果用指针的话,在定义的函数里会改变原数组的值,如何读取一个数组,对数组操作时,不改变原数组的值呢?如何把原数组的值复制到定义的函数里,进行操作呢?
搜索更多相关主题的帖子: 如何 
2015-08-11 11:33
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:0 
int arr[SIZE] = { ... };
...
int arr_backup[SIZE];
memcpy(arr_backup, arr, sizeof arr);
f(arr_backup);
2015-08-11 11:44
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
收藏
得分:0 
回复 2楼 kenierlee
看不懂。。
2015-08-11 11:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
沒想到你什麼場合下需要這樣做。不需要修改原有的數據,根本就不用把它的地址告訴函數。

授人以渔,不授人以鱼。
2015-08-11 12:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
2樓的意思是說,既然你不想修改原來的數據,那麼就把那些數據複製一份,修改複製出來的數據,就不至於改了原來的數據。你想一下,你這個需求是不是脫褲子放屁了?

授人以渔,不授人以鱼。
2015-08-11 12:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不想修改用指針傳進來的數據,就把參數寫成const指針,那麼編譯器會幫助你無法寫出無意修改數據的代碼。換言之,你函數中的代碼,祗應該讀那些數據,避免有寫和修改的代碼即可。

授人以渔,不授人以鱼。
2015-08-11 12:30
忧郁的红姐姐
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-8-11
收藏
得分:0 
只能写个中间值。。。用来过度我也是新手
2015-08-11 16:12
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:0 
以下是引用TonyDeng在2015-8-11 12:30:36的发言:

不想修改用指針傳進來的數據,就把參數寫成const指針,那麼編譯器會幫助你無法寫出無意修改數據的代碼。換言之,你函數中的代碼,祗應該讀那些數據,避免有寫和修改的代碼即可。

但楼主说的是“在定义的函数里会改变原数组的值,如何读取一个数组,对数组操作时,不改变原数组的值呢”,所以只能dump一个副本来修改吧?
2015-08-11 22:05
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:0 
和6楼一样
const char *s1
2015-08-12 06:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 8楼 kenierlee
是的,既然不想改变原数组的值,就不要直接对原数组进行写操作。

授人以渔,不授人以鱼。
2015-08-12 06:55
快速回复:刚学到指针和数组,有个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011588 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved