如何查找阵列的项目长度/数量?

neh*_*age 15 c arrays

可能重复:
函数参数中的数组长度

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

arrCustId[5]
Run Code Online (Sandbox Code Playgroud)

我怎么知道我的阵列中已存在多少个客户ID?总之如何找到数组的长度?

Ben*_*ott 26

如果数组是静态分配的,请使用 sizeof(array) / sizeof(array[0])

但是,如果它是动态分配的,不幸的是你运气不好,因为这个技巧总会返回sizeof(pointer_type)/sizeof(array[0])(在带有char*s的32位系统上将是4)你可以a)保持#define(或const)常量,或者b)保留一个变量.

  • 如果它是动态分配的,它将返回`sizeof(pointer)/ sizeof(array [0])`. (3认同)

mgi*_*uca 12

你的意思是阵列本身有多长,或者有多少顾客?

因为第一个问题的答案很简单:5(或者如果你不想硬编码,Ben Stott的回答).

但是其他问题的答案无法自动确定.大概你已经分配了一个长度为5的数组,但最初会有0个客户ID,并且会将它们一次放入一个,你的问题是,"我有多少客户ID放入数组?"

C不能告诉你这个.您需要保留一个单独的变量int numCustIds(例如).每次将客户ID放入数组时,请递增该变量.然后你可以告诉你有多少.