C函数传数组做参数时,怎样传值而不是传地址

liyuanhe211 2012-04-27 10:47:39
#include <stdio.h>
void test(int p[])
{
p[0]=1;
printf("%d",p[0]);
}

int main()
{
int p[1];
p[0]=0;
printf("%d",p[0]);
test(p);
printf("%d",p[0]);
}


以上程序输出011,我知道蜕化为指针的问题
希望进test的时候把数组p复制一份,而不是改变指针p指向的值,怎么用最简单的方法实现?
...全文
813 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
映维网 2012-04-29
  • 打赏
  • 举报
回复
在函数中新开辟一样大小的空间,然后把传入的数组的值memcpy到该空间里,搞定
Saleayas 2012-04-29
  • 打赏
  • 举报
回复

template<int N>
void test(int (&p)[N]);

Kaile 2012-04-29
  • 打赏
  • 举报
回复
一般如果传数组肯定是为了优化性能,避免复制开销,如果为了传值,就不要传数组了,传一个临时变量就完了
ak47csu 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

最简单的做法是把这个数组定义在一个结构内,然后将该结构作为一个参数传入。
[/Quote]
这个方法好
lkxd2011 2012-04-27
  • 打赏
  • 举报
回复
在test里面新建个数组,拷贝进去不就行了~~因为你这函数只有一个地址储存数据,所以在test里面对数据进行改变就会影响原来的数据~~
muyi66 2012-04-27
  • 打赏
  • 举报
回复
最简单的做法是把这个数组定义在一个结构内,然后将该结构作为一个参数传入。

65,139

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧