c++如何确认数组的元素为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++如何确认数组的元素为空相关的知识,希望对你有一定的参考价值。

例如int a[10]=1,2,3,4,5;
那么假如我想确认当a[6]无值的时候退出一个循环,该怎么弄。
还有,如何使数组不确定长度。即可以增加。。。

这无法确认,除非用户自己规定了记号,当数组里有规定的记号时就认为空了,比如空字符串就是字符数组的第一个元素为'\\0'的字符串。一般情况下是这样处理的:当数组里的数据已经失去存在的意义时,就认为它空了,可以用新的数据来覆盖了——根本没有“清空”的必要,也不可能真正清空,任何符号在数组里其实都是“数据”。所以数据只有有效与无效之别,没有有数与无数之分。有时候,希望数组里一开始或在运行中的某个时刻成为全0或其他符号,那实际上就是后续代码需要的数据,并不是“清空”的意思。对于静态声明的数组,可以这么做:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void)
    int a[10]=1,2,3,4,5,6,7,8,9,10,i,f=1<<sizeof(int)*8-1;//用最小的int数做空标记
    for(i=0;i<10;printf("%3d",a[i++]));//数组a中的数据使用完毕
    printf("\\n");
    a[0]=f;//认为a数组空了
    if(a[0]==f)//检测到a中数组无效了,就可重新输入数据
        for(i=0;i<10;scanf("%d",a+i++));
    printf("\\n");
    return 0;

如果是动态申请的数组,那就更好办了,数组的数据失效后,用free释放空间并使指针为NULL即可,需要时重新动态申请。如:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void)
    int *p,i;
    p=(int *)malloc(sizeof(int)*10);//动态申请数组空间
    for(i=0;i<10;scanf("%d",p+i++));//输入数据
    for(i=0;i<10;printf("%d ",p[i++]));//数据使用完毕
    free(p);//释放空间
    p=NULL;//使指针无效
    printf("\\n");
    return 0;

参考技术A a[6]无值的时候退出一个循环

答:a[6]~a[9]在没有赋值时,就是一个随机值。“a[6]无值”这种概念不对。
任何变量只要存在就有值,没有赋值时,就是一个随机值本回答被提问者采纳
参考技术B 数组元素都有默认值的,是不是空得看你衡量空的标准 参考技术C 定义一个变量记录数组的当前元素个数,如:
int cnt = 5;
for (int i = 0; i < cnt; ++i)
参考技术D 这个可以使用STL的vector……
#include
vector
a;
退出:
if(a.size<6)
break;
调整大小:a.resize(num)

以上是关于c++如何确认数组的元素为空的主要内容,如果未能解决你的问题,请参考以下文章

如果确认字段不为空,MVC 比较电子邮件

php [约会+] - 在确认页面中强制配置文件字段为空

调用API接口返回成功,但设备却没有收到消息怎么办

selenium判断元素是否为空

C++中如何判断动态数组为空?要具体代码,谢谢

如何确认多核系统中的openmp是不是使用了所有内核?