原文: How to Find the Size of an Array in C with the sizeof Operator

在用 C 语言编程时,有时你可能需要知道一个数组的大小。

例如,当你想遍历存储在数组中的所有元素,以确定一个特定的值是否存在。

在这篇文章中,你将学习如何使用 sizeof() 操作符查找一个数组的大小。

让我们深入了解一下吧。

C 语言中的数组是什么

数组让你在同一个变量名下存储多个值。

C 语言中的数组是相同数据类型的项目的集合。这意味着你可以创建一个只有整数值的数组或一个字符数组,等等。

要在 C 语言中创建一个数组,你首先需要指定数组要存储的值的数据类型。

然后,你给数组一个名称,后面是一对方括号,[]

在方括号内,你可以指定数组的大小。

所以,这里你可以创建一个名为 faveNumbersint 类型的数组,它将包含 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 语言中确定数组的大小。

谢谢你阅读本文,祝你编码愉快!