C++如何计算数组内实际存储的元素总个数
首先,C语言原生没有提供获取数组实际存入有效元素个数的语法,你给出的代码中,未显式初始化的后2个数组元素会被编译器自动初始化为0,你可以根据业务场景选择以下方案统计有效元素数量:
方案1:遍历统计(仅适用于有效元素不含0的场景)
如果你的业务逻辑里0不会作为有效元素存入数组,可以遍历数组直到遇到第一个0,统计有效个数:
// 先获取数组总声明长度 int total_len = sizeof(a) / sizeof(a[0]); int valid_count = 0; for (int i = 0; i < total_len; i++) { if (a[i] == 0) { break; } valid_count++; } // 最终valid_count的值为8,就是你要的实际存入元素个数
注意:如果数组的有效元素包含合法的0,该方案会统计错误,不推荐通用场景使用
方案2:单独维护有效计数变量(最通用,推荐使用)
直接定义一个额外的变量记录数组的有效元素个数,初始化、增删元素时同步更新该变量即可:
int a[10] = {1,2,3,4,5,6,7,8}; int valid_count = 8; // 初始化时直接赋值为实际存入的元素数量 // 后续如果新增元素到a[8],就执行valid_count +=1,删除元素同理同步更新
方案3:仅适用于字符数组
如果你操作的是char类型的字符串数组,C语言默认以\0作为字符串结束标志,可以直接调用strlen()函数获取有效长度,该规则不适用于int、float等其他类型数组。
内容的提问来源于stack exchange,提问作者Saad Ahmad
相关产品推荐
相关产品推荐

