今天遇到一个很奇怪的C++编程问题,那就是当数组赋值之后,另外一个变量的值发生了改变,程序中出问题的代码部分如下:
int b[1000] ;
date1=10100102;
for(int i=0;i<10;i++)
{
b[500]={0};
}
当程序执行完第3个语句b[1000]={0};的时候,data1的值突然变成了0,后来检查了以上代码,发现第3个语句的赋值方法不对,用大括号赋初值只能定义的时候赋值。于是第3句代码修改为如下就解决了:
memset(b,0,500);
或者:
for (int i = 0; i < 500; i++)//c or cpp language
{
b[i] = 0;
}
总结:在非定义的时候给数组全部赋初值0的时候,不能使用{0}进行赋值,否则可能会引发其它变量的值发生改变,正确的赋值方法可用如上所示2种方法,用函数memset()或for循环逐个给数组元素赋值。