1. 二维数组求行数
template<typename T, int N>
int calc_arr_size(T (&arr)[N]) {
return N;
}
用上面的函数求二维数组行数,calc_arr_size(数组) 即可。
double array [][3] =
{
{1,2,3},
{4,5,6}
};
int size = calc_arr_size(array);
cout << size << endl;
function(size);
cout << size << endl;
上面这段代码,我遇到一个问题,在int size的时候虽然结果是2, 但是我传入函数function中 再打印的时候 就变成832323323 类似这种数了,这种数用sizeof(832323323)还是能变为2。为了避免这个问题,函数传参的时候,一定要把size设成静态变量啊!
static int size = calc_arr_size(array);
2. 同理写好的结构体传参时,一定也要加上static
如果是全局的结构体变量写在#include之后,比如
#incluude <iostream>
static struct data; //初始化结构体
3. 结构体嵌套数组的时候,一定要设置好最大的数组大小,否则传进去的数据全乱了= =
#define MAXCOUNT 40
typedef struct
{
double number1;
double number2;
}stu;
typedef struct
{
stu data[MAXCOUNT]; //设置数组的最大容量为40
}stu1;