我如何在C语言中确定我的数组的大小?
也就是数组能容纳多少个元素?
执行摘要:
int a[17];
size_t n = sizeof(a)/sizeof(a[0]);
完整答案:
要确定数组的字节大小,你可以使用sizeof
操作符。
操作符。
int a[17];
size_t n = sizeof(a);
在我的电脑上,ints的长度是4字节,所以n是68。
为了确定数组中元素的数量,我们可以用数组的总大小除以 数组的总大小除以数组元素的大小。 你可以用类型来做这件事,像这样。
int a[17];
size_t n = sizeof(a) / sizeof(int);
并得到正确的答案(68/4=17),但是如果
a'的类型发生了变化,如果你忘记改变
sizeof(int)',就会出现一个讨厌的错误。
`sizeof(int)',就会出现严重的错误。
所以首选除数是sizeof(a[0])
,即数组中第0个元素的大小。
数组中第0个元素的大小。
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);
值得注意的是,sizeof
在处理一个已经衰减为指针的数组值时没有帮助:即使它指向一个数组的开始,对编译器来说,它与指向该数组单个元素的指针是一样的。指针并不记得用于初始化它的数组的任何其他信息。
int a[10];
int* p = a;
assert(sizeof(a) / sizeof(a[0]) == 10);
assert(sizeof(p) == sizeof(int*));
assert(sizeof(*p) == sizeof(int));