首页 > 代码库 > 获取动态数组指针 所指向数组长度的一种方法
获取动态数组指针 所指向数组长度的一种方法
经常在程序中会动态创建一个数组。将用一个指针来指向这个数组。
刚学C++,在动手想写东西时,考虑到想要取得这个动态数组的长度。网上找了点资料。基本想没得到好的答案,但看到了有人提到用 _msize取内存计算的方法。我自己测试了一下,貌似可以。
亲测代码如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | struct DATA { int price; char name[100]; }; void fn(DATA *d) { int n; n = _msize(d) / sizeof (DATA); // 这里计算出 d 的数组长度为 13 cout << n << endl; } int _tmain( int argc, _TCHAR* argv[]) { DATA *d; d = new DATA[13]; fn(d); system ( "pause" ); } |
_msize 只能取得 new, malloc 分配的内存大小。因此这种方法还是有一定的局限性的。
如果直接定义了数组的长度。再将数组传递给函数。_msize 是没法取得所传指针内存大小的。如:
?
1 2 | DATA d[10]; fn(d); // 会触发错误 |
但如果只想取 new 动态创建的数据指针,_msize能完全任务。我们还可以用模板的方式,让代码适应性更强些。如:
取动态数组指针的函数:
?
1 2 3 4 5 6 7 8 | template < class ArrayType> size_t getArrayLen(ArrayType *d) { size_t n; n = _msize(d) / sizeof (ArrayType); cout << n << endl; return n; } |
获取动态数组指针 所指向数组长度的一种方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。