数组的个数计算

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 在机器上占用了多少,所以就以一个字母占用一个字节来算,求大神解答)

那么求数组长度,就可以这样 总字节 / 其中一个字节 = 个数

上一篇:C语言学习


下一篇:腾讯二面:MySQL的半同步是什么?