如何确定 C 中数组的大小?
也就是数组能容纳多少个元素?
执行摘要:
int a[17]; size_t n = sizeof(a)/sizeof(a[0]);
完整答案:
要确定数组的大小(以字节为单位),可以使用sizeof 运算符:
sizeof
int a[17]; size_t n = sizeof(a);
在我的电脑上,整数是 4 个字节长,所以 n 是 68。
要确定数组中元素的数量,我们可以将数组的总大小除以数组元素的大小。您可以使用类型执行此操作,如下所示:
int a[17]; size_t n = sizeof(a) / sizeof(int);
并得到正确的答案(68 / 4 = 17),但如果类型 a改变了,如果你忘记改变的话,你会遇到一个讨厌的错误sizeof(int)。
a
sizeof(int)
所以首选除数是sizeof(a[0])或等价sizeof(*a)的,数组第一个元素的大小。
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);