arrays - 如何确定 C 中数组的大小?

标签 arrays c

如何确定 C 中数组的大小?

即数组可以容纳多少个元素?

最佳答案

执行摘要:

int a[17];
size_t n = sizeof(a)/sizeof(a[0]);
<小时/>

完整答案:

要确定数组的大小(以字节为单位),您可以使用 sizeof 运算符:

int a[17];
size_t n = sizeof(a);

在我的计算机上,int 的长度为 4 个字节,因此 n 为 68。

为了确定数组中元素的数量,我们可以除以 数组的总大小除以数组元素的大小。 您可以使用类型来执行此操作,如下所示:

int a[17];
size_t n = sizeof(a) / sizeof(int);

并得到正确的答案 (68/4 = 17),但如果类型 a 已更改,如果您忘记更改,则会出现严重的错误 sizeof(int) 也是如此。

因此首选除数是 sizeof(a[0]) 或等效的 sizeof(*a),即数组第一个元素的大小。

int a[17];
size_t n = sizeof(a) / sizeof(a[0]);

另一个优点是您现在可以轻松参数化 宏中的数组名称并获取:

#define NELEMS(x)  (sizeof(x) / sizeof((x)[0]))

int a[17];
size_t n = NELEMS(a);

关于arrays - 如何确定 C 中数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59636406/

相关文章:

Javascript:连接多个包含路径的数组并以特殊方式转换为对象

c - 用户输入的类型数组

c - 使用线程的状态菜单

arrays - Typescript 参数 - 通用对象数组和对象键数组(部分)

javascript - VueJS2 排序 JSON 数组

javascript - 使用带反引号和美元符号的 console.log() 打印变量

arrays - Swift数组中最大值及其索引的高效算法

c - 如何将 char* 传递给函数?

c - 使用 dtrace 分析 C 代码

c - 如何在 C 中编写接受比较器的函数?