C++获取数组长度!

一、静态数组。

比如 int int_ary[5] ,静态数组在编译的时候就知道了数组长度,这对编译器来说挺好实现的。

用得最多的大概就是sizeof了吧:


1

#define countof_macro(x) (sizeof((x)) / sizeof(x)[0])

对于C++,可以用模板。

如果将数组作为函数形参的话,它会退化成一个指针,但是引用则不会。使用引用带来的另外一个问题就是,声明参数时必须知道数组长度——我要是知道我还费这劲干啥?解决方法就是使用模板,将数组引用的数组大小声明为模板参数:


1

2

3

4

5

6

7

8

9

10

11

12

//错误的做法:这里形参已经退化为指针了

int countof_func_para(int int_ary[5])

{

    return countof_macro(int_ary);

}

//正确的做法

template<size_t n>

int countof_template(const int (&int_ary)[N])

{

    return N;

}

二、动态数组。

动态数组的长度可以在运行时指定,所以编译器也不知道它的长度。但是操作系统总该是知道的,不然释放的时候就知道该释放多少内存了。在VC中,提供了这样的函数用来获取由callocmalloc, 或者 realloc分配的内存的长度(bytes)。另,据说Borland C和GCC也实现了这个函数。


1

size_t _msize(void *);

注意:若传进去的指针不是指向堆里的区域的话,Debug版会有assertion failed。

时间: 2024-12-20 14:13:53

C++获取数组长度!的相关文章

c/c++ 获取数组长度

在C/C++中并没有提供直接获取数组长度的函数 c/c++ 获取数组长度其中一种方法是使用sizeof(array) / sizeof(array[0]). 在C语言中习惯上在使用时都把它定义成一个宏,比如: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 而在C++中则可以使用模板技术定义一个函数,比如: template <class T>int getArrayLen(T&

通过模板获取数组长度

通常在代码中我们需要获取数组长度 一种比较简单的方式是使用 sizeof 操作符 如下: #define SizeOfArray(arr) (sizeof(arr)/sizeof((arr)[0])) //这样使用没有问题 int a[10] = {0}; int size = SizeOfArray(a); 但是如果传入的是指针 调用SizeOfArray就会出错或者得到不正确的结果 通常情况下如果传入的是指针指向的数组 我们希望编译器在编译的时候就能提示错误 因此提供下面这个版本 使用了c+

什么情况下使用break关键字? 什么情况下使用Continue关键字? Java如何声明一个数组?JS如何声明一个数组?如何获取数组长度? 如何遍历数组?

什么情况下使用break关键字?什么情况下使用Continue关键字? Break Break关键用于终止循环. 示例: 1 2 3 4 5 6 for (int i = 0; i < 10; i++) {   if (i == 4) {     break; //终止循环,后面的循环不再执行   }   System.out.println(i); } Continue Continue关键字用于终止本次循环,其它循环继续. 示例: 1 2 3 4 5 6 7 for (int i = 0;

C++获取数组长度

1.获取字符数组长度 char a[]="abcdef"; int length1=sizeof(a)/sizeof(a[0]); cout<<"a"<<length1<<endl; length1为7. cout<<"a"<<strlen(a)<<endl; 输出6 注:string不能用strlen函数 2.获取字符串string长度 #include <strin

js获取数组长度,对象成员个数字、符串字数

文章来源:百度文库 Javascript怎么得到数组长度(也就是数组的元素个数)? Javascript怎么获取对象的成员个数? 你肯定想到了array.length!? 那么我们来测试一下下面这个例子. <script type="text/javascript"> var a = []; a[50] = 50; alert(a.length); </script> 请问数组a有多少个元素, 或者换一句话说, 数组a的长度为多少? 你会告诉我长度为1, 但浏览

Java 实例 – 获取数组长度

package array; public class ArrayLength { public static void main(String[] args) { /** * 获取数组的长度 */ int i[] = { 1, -4, 1, -2, 4, 7, 8, 5, 4, -1, 25 }; System.out.println("数组长度是:"+i.length); } } 输出结果为 数组长度是:11 原文地址:https://www.cnblogs.com/zhuxiao

PHP | 获取数组长度的方法

一.获取一维数组的长度 count.sizeof 都可以直接统计一维数组长度. 例如:$arr = Array('0','1','2','3','4');       echo count($arr);    // 输出5 $arr = array('A','B','C');               echo sizeof($arr);   // 输出3 二.获取多维数组的长度 e.count函数有两个参数: 0(或COUNT_NORMAL)为默认,不检测多维数组(数组中的数组); 1(或C

JavaScript 数组 length 属性获取数组长度或设置数组元素的数目

JavaScript 数组 length 属性 JavaScript 数组 length 属性可返回或设置或组中元素的数目,语法如下: array_object.length 利用 length 属性得到元素数目 <script language="JavaScript"> var array_1 = new Array('a',10.5,true); document.write( '数组长度 ' + array_1.length ); </script> 运

lua中获取数组长度问题

lua中获取table长度常用的方法有两种 : 1:table={}   print(#table) 2:arr={}   table.getn(arr) 两者最重要的区别还是存在的,前者 “#” 在下标索引不连续的时候会得到 0.(博主的测试而已,如有异议,请告知下,一起学习)