c++/c 中 数组的个数计算
当我们定义一个数组是,一般是这样定义的:
int a[] = {1, 2, 3, 4, 5};
或者是
string str[] = {"ssss", "123", "asdasd", "wwwwwwwwwww"};
,然后,我们需要求数组的个数应该怎样做呢?
答案是:
int nLen = sizeof(a) / sizeof(a[0]);
int nLen = sizeof(a) / sizeof(int);
或者是:
int nLen = sizeof(str) / sizeof(str[0]);
int nLen = sizeof(str) / sizeof(string);
上面两条任意一条都可以。
那么为什么这么写就可以求出来 数组的个数呢。
首先 sizeof()
函数
sizeof()
它是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小。
sizeof 运算符可用与获取类、结构、共用体喝其他用户自定义类型的大小。来自菜鸟教程
例如:
int a = 5;
变量 a 是 int 型变量,在电脑中占用 4 个字节,所以
sizeof(a) == 4
其次:
当我们定义一个数组时,系统默认是 占用空间少的向占用空间多的靠齐。
例如:
int a[] = {1, 2, 3, 4, 5};
所有的元素都是占用 4 个字节。 总字节就是 4* 5 = 20
string str[] = {"ssss", "123", "asdasd", "wwwwwwwwwww"};
第一个元素占用 5 个字节,(\n也算一个)。而 最有一个是12 个字节, 根据占用空间少的向占用空间多的靠齐原则,所以str 的所有元素都是占用了 12 个字节,那么str 就是真用了 12 * 5 = 60 个字节。(这里不知道string 在机器上占用了多少,所以就以一个字母占用一个字节来算,求大神解答)
那么求数组长度,就可以这样 总字节 / 其中一个字节 = 个数