请问一个变量的定义怎么理解
请教一个变量的定义如何理解?
template <typename T, size_t size>
T min(T (&r_array)[size]) {
T 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 ia[] = {0, 1, 2, 3, 5};
double da[] = {1.2, 3.2, 6.3, 7.4, 5.6};
int i = min(ia);
double d = min(da);
其中第二行中的T (&r_array)[size]这个定义应该怎样理解呢?
------解决方案--------------------
T min(T (&r_array)[size])
min函数返回类型是T,形参是一个类型为T的引用数组,数组大小为size
------解决方案--------------------
楼上的表达方式可能有问题,确切的说应该是:T (&r_array)[size])的含义为r_array是一个类型为T,大小为size的数组的引用。
比如定义:int iarr[10]; int (&riarr)[10];
那么就可以riarr = iarr。
C++明确规定不能定义一个引用数组。
------解决方案--------------------
它是通过模板的魔力完成的。再认真看C++ Primer,你会理解到,模板生来就干这些神奇事的。
template <typename T, size_t size>
T min(T (&r_array)[size]) {
T 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 ia[] = {0, 1, 2, 3, 5};
double da[] = {1.2, 3.2, 6.3, 7.4, 5.6};
int i = min(ia);
double d = min(da);
其中第二行中的T (&r_array)[size]这个定义应该怎样理解呢?
------解决方案--------------------
T min(T (&r_array)[size])
min函数返回类型是T,形参是一个类型为T的引用数组,数组大小为size
------解决方案--------------------
楼上的表达方式可能有问题,确切的说应该是:T (&r_array)[size])的含义为r_array是一个类型为T,大小为size的数组的引用。
比如定义:int iarr[10]; int (&riarr)[10];
那么就可以riarr = iarr。
C++明确规定不能定义一个引用数组。
------解决方案--------------------
它是通过模板的魔力完成的。再认真看C++ Primer,你会理解到,模板生来就干这些神奇事的。