回 帖 发 新 帖 刷新版面

主题:C++中函数模板问题

template <typename T,int n>
T min(T [color=FF0000](&a)[n][/color])
{
   T min=a[0];
   for(int i=1;i<n;i++)
      if(a[i]<min) min=a[i];
   return min;
}
上面的函数模板中红色的部分的数组形参为什么这样写?知道它是什么意思,可是不理解,应该不是引用吧?希望各位高手能不吝指教。

回复列表 (共3个回复)

沙发

是数组的引用,类似于(a*)[n]是数组指针 -->  a*[n]是指针数组

板凳

还是不明白,可不可以讲的详细点?

3 楼

就是一个语法而已。
T (*a)[n],表示a是一个指针,指向一个数组。数组的元素类型为T,元素个数为n。
T (&a)[n],表示a是一个引用,引用一个数组。数组的元素类型为T,元素个数为n。

    int a[30];
    int (*p)[30] = &a;
    int (&r)[30] = a;

把这些理解了,再看楼主的模板,就发现没什么困难了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册