关于C++数组函数传值的问题

SunMoon-X 2017-04-14 11:47:51
请教大家
我现在有个函数:

方法A:

void funcA(const ClassA* arr, size_t number_of_ClassA);

//我可以这样写:
ClassA temp[] = { ClassA(1, "red"), ClassA(2, "green")};

funcA(temp, sizeof(temp) / sizeof(temp[0]));


这样写有个问题数组不是动态的!

现在我要申明一个动态数组

方法B:

ClassA* temp[len];

temp[1] = new ClassA(1, "red");
temp[2] = new ClassA(2, "green");

//那我现在该怎么调funcA这个函数
//我是这么写的:
funcA(temp[0], sizeof(temp) / sizeof(temp[0]));




但总感觉是错的!
请问下我如果用动态的数组该怎么调用funcA的方法


...全文
99 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SunMoon-X 2017-04-14
  • 打赏
  • 举报
回复
谢谢!
paschen 2017-04-14
  • 打赏
  • 举报
回复
引用 2 楼 jiuaizxc 的回复:
[quote=引用 1 楼 paschen 的回复:] 两次new的内存未必连续,如果要按数组的处理方式,需要用new[]申请空间
对,这里是个错! 那你看我的方法里面这样设置的参数是否正确呢?

ClassA* temp = new ClassA[len]; 
funcA(temp[0],  sizeof(temp) / sizeof(temp[0]));
特别是这个的sizeof(temp) / sizeof(temp[0])计算[/quote] 不正确,这里的temp实际是指针,不是数组,既然大小都是len了,直接传len就可以了: funcA(temp, len);
SunMoon-X 2017-04-14
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
两次new的内存未必连续,如果要按数组的处理方式,需要用new[]申请空间
对,这里是个错! 那你看我的方法里面这样设置的参数是否正确呢?

ClassA* temp = new ClassA[len]; 
funcA(temp[0],  sizeof(temp) / sizeof(temp[0]));
特别是这个的sizeof(temp) / sizeof(temp[0])计算
paschen 2017-04-14
  • 打赏
  • 举报
回复
两次new的内存未必连续,如果要按数组的处理方式,需要用new[]申请空间

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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