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