在数组进行集成初始化时(上一篇中有相关内容,链接在下方),数组长度会由编译器设定。
数组的初始化
https://blog.csdn.net/weixin_52133421/article/details/122850510?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen
如果需要得到数组的大小,可以通过sizeof函数。sizeof(array)可以得到array数组所占的内容大小,单位为字节(Byte),sizeof(array[i])可以得出单个元素所占内容大小。所以可以通过sizeof(array)/sizeof(array[i])得出数组的长度。
源代码:
#include<stdio.h>
int main()
{
int i;
int number;
int array[] = {1,3,5,4,7,0,4,6,9,12,16,23};
printf("数组总字节数:%lu\n", sizeof(array));
printf("数组单个元素字节数:%lu\n", sizeof(array[0]));
number = sizeof(array) / sizeof(array[0]); //number即为数组长度
printf("数组长度:%d\n", number);
for (i = 0; i < number; i++)
printf("%d ", array[i]);
return 0;
}
测试结果:
数组总字节数:48
数组单个元素字节数:4
数组长度:12
1 3 5 4 7 0 4 6 9 12 16 23
这样得出数组长度的最大好处在于一旦修改数组中初始的数据,不需要再修改遍历的代码,例如其中的遍历数组操作。
for (i = 0; i < number; i++)
printf("%d ", array[i]);
无论数组中的数据怎么修改,数组长度始终是正确的。