C++获取数组的长度(用模板可以实现)
来源:互联网 发布:梦里花落知多少意思 编辑:程序博客网 时间:2024/06/10 03:56
#include<iostream>using namespace std;int getArrLen1(int *&a){//errorreturn sizeof(a)/sizeof(a[0]);}int getArrLen2(int *a){return sizeof(a)/sizeof(a[0]);}template<typename T>int getArrayLength1(T a){return sizeof(a)/sizeof(a[0]);}/**正确的获取数组长度的函数(虽然是模板)*/template<typename T>int getArrayLength2(T &a){return sizeof(a)/sizeof(a[0]);}int main(){int *p = new int[200];int size = *(p-4);cout << size << endl;size = *(p-3);cout << size << endl;size = *(p-2);cout << size << endl;size = *(p-1);cout << size << endl;int a[100];cout << "a address:" << a << endl;cout << "&a address:" << &a << endl;/*C:\Users\jackz\Desktop\codes\cpp>g++ getArrayLength.cppgetArrayLength.cpp: In function 'int main()':getArrayLength.cpp:39:22: error: invalid initialization of non-const reference of type 'int*&' from an rvalue of type 'int*' cout << getArrLen1(a) << endl; ^getArrayLength.cpp:4:5: note: initializing argument 1 of 'int getArrLen1(int*&)'int getArrLen1(int *&a){^*///cout << getArrLen1(a) << endl;//error//cout << "&&a address:" << &&a << endl;//errorcout << getArrLen2(a) << endl;cout << getArrayLength1(a) << endl;//1cout << getArrayLength2(a) << endl;//100return 0;}
C:\Users\jackz\Desktop\codes\cpp>g++ getArrayLength.cppC:\Users\jackz\Desktop\codes\cpp>a001633043277134352027a address:0x28fd78&a address:0x28fd7811100
0 0
- C++获取数组的长度(用模板可以实现)
- C获取数组长度
- c/c++如何获取数组的长度
- C/C++获取数组的长度
- C/C++ 获取数组的有效长度
- c语言怎么获取数组的长度
- C/C++中获取数组的长度
- c语言怎么获取数组的长度
- C/C++语言获取数组的长度
- c语言获取定义数组的长度
- 获取数组的长度
- 数组长度的获取
- c语言获取数组长度
- c/c++ 获取数组长度
- 如何在模板中获取数组长度?
- C/C++中如何获取数组的长度?
- C/C++中如何获取数组的长度?
- C/C++中如何获取数组的长度?
- SharedPreferences工具类封装
- mac IntelliJ 15破解方法
- HDU-2546-饭卡
- Android学习笔记-SQLite数据库实战
- C++ 穷举法 三色球问题
- C++获取数组的长度(用模板可以实现)
- Java三大特性之多态
- prim 与 dijkstra 的区别
- uvalive 7480 Association for Control Over Minds
- Java设计原则和模式笔记
- JDBC
- iOS-3D touch相关开发
- 51nod动态规划入门--最长公共子序列
- DP泛做