原文: How to Find the Size of an Array in C with the sizeof Operator
在用 C 语言编程时,有时你可能需要知道一个数组的大小。
例如,当你想遍历存储在数组中的所有元素,以确定一个特定的值是否存在。
在这篇文章中,你将学习如何使用 sizeof()
操作符查找一个数组的大小。
让我们深入了解一下吧。
C 语言中的数组是什么
数组让你在同一个变量名下存储多个值。
C 语言中的数组是相同数据类型的项目的集合。这意味着你可以创建一个只有整数值的数组或一个字符数组,等等。
要在 C 语言中创建一个数组,你首先需要指定数组要存储的值的数据类型。
然后,你给数组一个名称,后面是一对方括号,[]
。
在方括号内,你可以指定数组的大小。
所以,这里你可以创建一个名为 faveNumbers
的 int
类型的数组,它将包含 5
个整数:
int faveNumbers[5];
要在数组声明时在其内部插入数值,请使用赋值运算符 =
,和一对大括号 {}
。
在大括号内,输入项目并以逗号分隔:
int faveNumbers[5] = {7, 33, 13, 9, 29};
上面的代码创建了一个数组,名称为 faveNumbers
,其中有 5
个整数,7, 33, 13, 9, 29
。
你也可以把上面的代码写成这样:
int faveNumbers[] = {7, 33, 13, 9, 29};
在上面的例子中,我没有指定数组的大小。
然而,编译器可以知道它的大小是 5
,因为我在初始化它时给了它 5
个元素。
这里需要注意的是,一旦你声明了数组,你就不能改变它的大小和类型,因为它们有固定的长度。
如何在 C 语言中找到一个数组的大小
C 语言没有提供一个内置的方法来获取一个数组的大小。
尽管如此,它确实有内置的 sizeof
操作符,你可以用它来确定大小。
使用 sizeof
运算符的一般语法如下:
datatype size = sizeof(array_name) / sizeof(array_name[index]);
让我们把它分解一下:
size
是存储数组大小的变量名,datatype
指定存储在size
中的数据值的类型。sizeof(array_name)
计算数组的大小,单位是字节。sizeof(array_name[index])
计算数组中一个元素的大小。
现在,让我们看看这个操作的效果,并把它分解成各个步骤,看看它是如何工作的。
首先,sizeof
操作符返回分配给数组的内存总量,单位是字节。
#include <stdio.h>
int main() {
// 我的数组
int faveNumbers[] = {7, 33, 13, 9, 29};
// 使用 sizeof 来获取数组的字节大小
size_t size = sizeof(faveNumbers);
printf("The size is %d bytes \n", size);
}
// 输出
// The size is 20 bytes
然而,上面的代码并没有直接计算出数组的大小。
你将需要一些额外的编程逻辑,像这样:
array_length = (total size of the array) / (size of the first element in the array)
要想知道数组的长度,你需要用总的内存量除以一个元素的大小——这种方法是有效的,因为数组存储的是相同类型的项目。
所以,你可以用总的字节数除以数组中第一个元素的大小。
要访问一个数组中的第一个元素,要指定名称,并在方括号中放入 0
。
在编程和一般的计算机科学中,索引总是从 0
开始,所以数组中的第一个元素的索引总是 0
。
#include <stdio.h>
int main() {
int faveNumbers[] = {7, 33, 13, 9, 29};
size_t size = sizeof(faveNumbers) / sizeof(faveNumbers[0]);
printf("The length of the array is %d \n", size);
}
// 输出
// The length of the array is 5
这里需要注意的是,数据类型的大小将因平台而异。
总结
希望这篇文章能帮助你了解如何使用内置的 sizeof
操作符在 C 语言中确定数组的大小。
谢谢你阅读本文,祝你编码愉快!