C 数组大小
获取数组大小或长度
要获取数组的大小,可以使用 sizeof
运算符
为什么结果显示 20
而不是 5
,尽管数组包含 5 个元素?
- 这是因为 sizeof
运算符返回的是类型的大小(以 **字节** 为单位)。
您从 数据类型章节 中了解到,int
类型通常是 4 个字节,所以从上面的例子中,4 x 5(*4 字节 x 5 个元素*)= **20 字节**。
了解数组的内存大小对于处理需要良好内存管理的大型程序非常有益。
但是,如果您只想知道数组有多少个元素,可以使用以下公式(用数组的大小除以数组第一个元素的大小):
示例
int myNumbers[] = {10, 25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
printf("%d", length); // 打印 5
自己动手试一试 »
改进循环
在上一个章节的 数组循环部分,我们在循环条件中写死了数组的大小(i < 4
)。这并不理想,因为它只适用于指定大小的数组。
但是,通过使用上面示例中的 sizeof
公式,我们现在可以创建适用于任何大小数组的循环,这样更具可持续性。
不必编写
示例
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}
自己动手试一试 »
最好这样写:
示例
int myNumbers[] = {25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
int i;
for (i = 0; i < length; i++) {
printf("%d\n", myNumbers[i]);
}
自己动手试一试 »