如何查找数组中元素的长度/数量?

16

可能是重复问题:
在函数参数中数组的长度

我的数组大小为5。例如:

arrCustId[5]

我怎么知道我的数组中已经有多少个客户ID?简而言之,如何找到数组的长度?

3个回答

27
如果数组是静态分配的,请使用sizeof(array) / sizeof(array[0])
但是,如果它是动态分配的,不幸的是,这个技巧总是会返回sizeof(pointer_type)/sizeof(array[0])(在32位系统上使用char*s时将返回4)。您可以使用a)保持#define(或const)常量,或b)保持变量。

3
如果它是动态分配的,它会返回 sizeof(pointer) / sizeof(array[0]) - sam hocevar

13

你的意思是数组本身有多长,还是里面有多少个客户ID?

因为回答第一个问题很容易:5(或者如果您不想硬编码,可以使用Ben Stott的答案)。

但是另一个问题的答案无法自动确定。假设您已经分配了一个长度为5的数组,但最初其中没有任何客户ID,并且将一个一个地放入其中,您的问题是:“我放了多少个客户ID到数组中?”

C语言无法告诉您这一点。您需要保留一个单独的变量 int numCustIds(例如)。每次将客户ID放入数组时,都要增加该变量。然后您就可以知道已经放入了多少个。


1
如果您想知道有多少客户,请记住您放了多少进去。 - sam hocevar

-6

我不确定我完全明白你的意思。

但是要获取已初始化数组的长度,

使用 strlen(string) 不行吗?


strlen仅用于字符串,因为它在初始化的数组中查找NULL终止符(\0)。因此,它应该仅与char *一起使用,因为它们有点特殊。 - judda
嗯,你说得有点对 :) 但要意识到字符串实际上是字符数组... - Joe DF
其他类型的数组中是否也有\0呢? - Charles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接