c++数组相关
问题从获取数组的长度开始
数组长度的获取
1 | int arr[] = {1, 2, 3, 4, 5}; |
- 数组元素的类型是确定的,所以每个元素的大小都是一样的
- 所以数组长度 = 数组总大小 / 单个元素大小
于是写个函数获取数组长度
1 | int arrSize(int[] arr) { |
- 数组作为参数在函数间传递时,传递的只是第一个元素的地址
1
2
3
4
5
6
7int arrSize(int[] arr) {
cout << *arr << endl;
return sizeof(arr) / sizeof(arr[0]);
}
int arr[] = {1, 2, 3, 4, 5};
arrSize(arr) // 1
然后想起了引用
- 然后发现不能声明素组的引用
- 翻阅资料得到解释
数组名arr只代表数组首元素的地址,本身不是一个占有存储空间的变量,所以不能建立数组的引用
这时想起了刚刚百度时看到的template
1 | template<typename T> |
int arrSize(T& arr)使用函数模板可以获取数组的引用?- 貌似只有这种解释 - - !