请教:关于数组的引用做参数!!!

mimi_eleven 2002-05-14 12:17:12
程序:
template<typename Type, int size>
Type min (Type (&r_array)[size])
{
Type min_val = r_array[0];
for (int i = 1; i < size; i++)
if (r_array[i] < min_val)
min_val = r_array[i];
return min_val;
}
int main()
{
int ia[] = {11, 21, 34, 68,14};
double da[3] = {2.3, 33.5,1.4};
int i = min(ia);
double d = min(da);
return 0;
}
请问size是什么时候被传进去的?
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
潘李亮 2002-05-17
  • 打赏
  • 举报
回复
有一个人说对了(c_antinomy(异常,又见异常!) )
mimi_eleven 2002-05-17
  • 打赏
  • 举报
回复
这个是老潘的C++ PRIMER译本上P412页的一程序, 可是我不太理解的就是size是怎么进去的,请大家先不论编译器是不是能通过,只是从标准的C++来看, 好吗?
能否请大家帮我仔细想想呢? 谢谢了
c_antinomy 2002-05-14
  • 打赏
  • 举报
回复
下面是编译器生成的汇编代码摘录:

PUBLIC ?min@?$@H$04@@YAHAAY04H@Z ; min<int,5>
PUBLIC ?min@?$@N$02@@YANAAY02N@Z ; min<double,3>
c_antinomy 2002-05-14
  • 打赏
  • 举报
回复
模板参数推断:
如:double da[3]
--〉Type : double; Size : 3;
liu_feng_fly 2002-05-14
  • 打赏
  • 举报
回复
ia,da都是数组名,那么他们当然都有大小了,那么,size的大小就确定了.
Type (&r_array)[size]相当于
int (&ia) [5]
DaNiao 2002-05-14
  • 打赏
  • 举报
回复
C++从来就不保存数组的RANGE,所以C++没有数组越界检察
难到说,你的C++和我用的不一样?

你是用什么编译器,BC?我发现BC是经常会搞些笑的,特别是
在TEMPLATE方面,BC作得很个性
DaNiao 2002-05-14
  • 打赏
  • 举报
回复
您的程序能运行吗?
tinytot 2002-05-14
  • 打赏
  • 举报
回复
这段代码不能编译呀,不知道用的是啥编译器?
c_antinomy 2002-05-14
  • 打赏
  • 举报
回复
有些编译器可能不符合标准,用vc.net试试;
注意编译选项的设置,否则产生连接错!
fangrk 2002-05-14
  • 打赏
  • 举报
回复
我觉得程序编译都通不过啊!

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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