c++ primer中p414页:
函数模板
Template<class type,int size>
type min(type(&r_array)[size]){...}
接下来有两个应用的例子:
(1) void f(int pval[9]) {int val=min(pval);}
(2) double da[8]={1.1,10.2,...};
int i1=min(da);
书上解释(1)的应用是错误的,而(2)是正确的。我不知它的传参的差别在什么地方?
同时数组(2)中元素的个数8是如何传递的?望指点!
因为 (1) 里面 9 被忽略了, 并没有传进来.
void f(int pval[9]) 相当于 void f(int pval[])
这个是延续 C 调用里的约定. 数组是以指针的方式传递的, 最后一维的
长度被省略. (ps. C99 里好象有所修改, 我记不太清了)
(2) 里面 da[8] 在前面声明, 后面 min(da) 是可以认到这个 8 的.
函数参数中的数组是以指针方式传递的,所以size没有得以保留