C语言中如何统计数组内已填充的有效元素数量
统计数组已填充位置数量的实现方法
首先明确前提:C 语言原生静态数组本身不存储「总容量」「已填充元素数」这类元数据,要实现统计必须先约定空位置的标识值,保证该标识值不会出现在你的有效元素范围内即可。
以你给出的示例场景为例,有效元素均为非0正整数,我们可以约定0作为空值标识(C 语言中静态数组未手动初始化的位置默认会被赋值为0,刚好匹配需求),实现逻辑如下:
- 从数组第一个元素开始遍历,每遇到一个非空值就计数+1
- 遇到第一个空值时终止遍历,此时的计数值就是已填充的位置总数
对应实现代码:
#include <stdio.h> int get_filled_count(int arr[]) { int count = 0; // 约定空值为0,遍历到第一个空值就停止 while (arr[count] != 0) { count++; } return count; } int main() { int a[10] = {10,20,30,40,50,60}; printf("%d", get_filled_count(a)); return 0; }
运行上述代码输出结果为6,符合要求。
注意事项:如果你的业务场景中有效元素可能包含0,可以替换为其他不会用到的值作为空值标识,比如
INT_MIN,填充数组时将未使用的位置统一设为该标识即可。如果数组所有位置都有可能被有效元素填满,建议额外维护数组总容量参数,避免遍历越界。
内容的提问来源于stack exchange,提问作者Aritra Roychowdhury
相关产品推荐
相关产品推荐

