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/37354970/

相关文章:

javascript - 使用reduce从数组中删除项目

c++ - 防止指针作为数组传递

c - C语言中char arr[] = "OX|-"如何工作

C:结构体的 union 和 union 作为函数中参数的复杂使用会产生未定义的行为

c - 在 C 中打印数字钻石

javascript - 如何对对象数组进行排序?

mysql - 在 mysql_fetch_array 结果的最后三位数字之前插入逗号?

c - 链表麻烦

c++ - 读取 CAN 消息时如何创建停止过滤器(而不是通过过滤器)? [C++, Linux]

c - 无法编译 io_uring