如何查找数组中的元素个数?

CRa*_*Rag 1 c arrays

int a[10];
for(int i=0;i<5;i++)
{
   a[i]=i;
}
int len=sizeof(a)/sizeof(int);
print("%d",len);
Run Code Online (Sandbox Code Playgroud)

上面的代码打印10,但实际存在的元素数是5。需要帮助。

如果它是一个字符数组,这不会是一个问题,但这里的整数数组会引起痛苦。

Sou*_*osh 8

上面的代码打印 10,但实际存在的元素数是 5

不,元素的实际数量10。你没有填充一个值来存储它,这是一个不同的 this,但这不会改变数组维度。

如果您需要跟踪使用/操作的元素,您需要通过在某处维护一个计数器来自己完成。

或者,如果您可以确保

  • 数组大小始终是所需的最大长度 + 1
  • 有一个值永远不会出现在有效值列表中

您可以使用标记值,(类似于char数组中的空终止符),并使用它可以找到数组中已使用元素的数量。

  • @CRag 对于几乎所有目的(*包括字符串!*主要),这都是一个糟糕的解决方案。相反,记录长度会更好。这就是为什么几乎所有库都这样处理它,而不是使用哨兵值。 (2认同)