C++ 获取数组长度
C++ 获取数组长度
1 字符串数组
对于字符串数组,使用strlen()函数来获取字符串数组的长度。
char a1[] = "fwegweasdasdwqew";
cout << strlen(a1) << endl;
2 数字数组
例如: int arr[] = { 1,5,9,10,9,2 }; 可以用sizeof(a)/sizeof(a[0])来获取数组的长度。
原理:sizeof()函数可以返回数组所占的内存,而sizeof(a[0])返回的是数组第一个元素所占的内存。
所以式子:**sizeof(a)/sizeof(a[0])**得到的就是数组的个元素个数,也就是数组的长度。
举例说明:
#include<iostream>
using namespace std;
template<class T>
int length(T& arr)
{
//cout << sizeof(arr[0]) << endl;
//cout << sizeof(arr) << endl;
return sizeof(arr) / sizeof(arr[0]);
}
int main()
{
int arr[] = { 1,5,9,10,9,2 };
// 方法一
cout << "数组的长度为:" << length(arr) << endl;
// 方法二
//cout << end(arr) << endl;
//cout << begin(arr) << endl;
cout << "数组的长度为:" << end(arr)-begin(arr) << endl;
system("pause");
return 0;
}
注意:
1 在C++中,如果要多次获取不同数组的长度,为了避免重复写代码,可以定义一个求数组长度的模板。
template <class T>
int getlength(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
2 数组的传递形式:
#include<iostream>
using namespace std;
int GetSize(int data[]) {
return sizeof(data);
}
int main() {
int data1[] = {1,2,3,4,5};
int size1 = sizeof(data1);
int *data2 = data1;
int size2 = sizeof(data2);
int size3 = GetSize(data1);
cout<<size1<<" "<<size2<<" "<<size3<<endl;
return 0;
}
数组作为函数参数传递的时候,传递的是指针,所以不能正确的求出子函数中传递进去的数组的长度,切记。
详细的可以看我的另一篇博客:C++中数组作为函数参数的注意问题