C++计算数组可以使用下面的方式:
template <class T>
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
但是对于C++,输入的数组名字会退化为指针
因此如果不用模板,将不会得到正确的结果
并且,只有在数组形式下使用数组的名字,和sizeof函数才可以获得数组的长度
即假如定义数组 char Array[] = {'1','2','3'};是可以用sizeof计算的
即:int len = sizeof(Array)/sizeof(Array[0]);
对于malloc的内存,无法通过sizeof直接获取到空间的大小
对于特殊的情况,假如是字符数组的话,可以通过strlen函数获得字符串的长度,
char strc[] = "123456";
char*pstr = strc;
printf("%d,%d,%d",sizeof(strc),sizeof(pstr),strlen(pstr));
对于字符串的话,由于在字符串的末尾会加一个 ' ' 字符所以在求取字符串长度时会多一个。
输出:7,4,6