请问还原数组的方法

vloso 2018-08-11 11:39:00
#include <iostream>
using namespace std;
struct Sales
{
double sales[4];
double average;
double max;
double min;
};
void setSales(Sales &s);
int main()
{
Sales app[2]=
{
{{1,2,3,4},1.1,2.2, 3.3},
{{10,20,30,40},10.1,20.2, 30.3}
};
setSales(*app);
}


void setSales(Sales &s)
{
s[1].min;//错误的,报错
}


创建了一个数组结构,设置默认参数,通过地址传递过去函数,但是在函数里没办法获得数组,所以没办法指针获得结构1 或者2的结果!

请问这个情况怎么解决!

...全文
240 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
沐沐沐沐木 2018-08-13
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
struct Sales
{
double sales[4];
double average;
double max;
double min;
};
void setSales(Sales *s);
int main()
{
Sales app[2]=
{
{{1,2,3,4},1.1,2.2, 3.3},
{{10,20,30,40},10.1,20.2, 30.3}
};
setSales(app);
return 0;
}


void setSales(Sales *s)
{
cout<<(s+1)->min<<endl;
}
这个能用
lang_dye 2018-08-12
  • 打赏
  • 举报
回复
引用 3 楼 Slzde_sub 的回复:
所以可能楼上自己明白,但是请不要写出如此让新人误解的话来,例如:数组也是指针!

数组确实不等同于指针,比如你说的数组不能做++运算,指针可以,还有就是数组有大小,指针没有。所以我表达有些失误。数组被传递后会失去大小属性,所以传递数组时一般建议同时传递数组的大小。但一般你知道数组和指针的区别后,可以用指针的思维来处理数组。
赵4老师 2018-08-12
  • 打赏
  • 举报
回复
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
  • 打赏
  • 举报
回复
s[1].min--->s.min;
或者
void setSales(int (&s)[2])
或者
void setSales(int *s)

你属于引用传参没弄懂“如果形参是数组的引用,编译器不会将数组实参转化为指针”,你传个指针进去也无济于事啊。
另外,你也别想把这个()去掉,注意[]和&的优先级。
“int &a[13]表示一个指向13个整形引用的数组,而(int &)a[13]表示含有13个整形元素数组的引用”
[]里的数字也不能去,传递引用实参时不会把数组引用转化为指针,所以你得到直接就是数组的第一项。
lang_dye 2018-08-11
  • 打赏
  • 举报
回复
上面说的是对的。我补充一下;
void setSales(Sales &s);这个传递的是引用,不是指针。&这个符号在这里是“引用符号”不是“取地址符号”。所以传递的是“一个”struct Sales变量。setSales(app[1]);这个里面只能传递变量,不能传递指针。如果你想用“引用”的话就是

void setSales(Sales &s1, Sales &s2);
setSales(app[1], app[2]);

楼上的方法是用指针解决的(数组也是指针);

64,439

社区成员

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

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