数组元素全部初始化为同一值问题

一:用memset初始化

二:定义数据类型时直接初始化

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	int a[10],b[10],c[10];
        bool map[10][10];
	memset(a,0x3f,sizeof(a));
	a[2]=0x3f3f3f3f;
        memset(map,false,sizeof(map));//正确 
	memset(b,0,sizeof(b));
	memset(c,-1,sizeof(c));
	//memset(c,2,sizeof(c));错误无法将数组初始化为2
	int d[10]={0};//虽然数组元素全部为0了,但也并不是通过全部初始化为零得到的 
	int e[10]={-1};//无法将数组全部初始化为-1; 
	cout<<a[0]<<' '<<a[1]<<endl;
	cout<<a[2]<<endl;
	cout<<b[0]<<' '<<b[1]<<endl;
	cout<<c[0]<<' '<<c[1]<<endl;
	cout<<d[0]<<' '<<d[1]<<endl;
	cout<<e[0]<<' '<<e[1]<<endl;
}

三:数组不初始化的默认值

  1. #include <iostream>  
  2. using namespace std;  
  3. int a[10];  
  4. char b[10];  
  5. int main()  
  6. {  
  7.     for (int i = 0; i < 10; i++)            //int全局数组不初始化默认为0  
  8.     {  
  9.         cout << a[i];  
  10.     }  
  11.     cout << endl;  
  12.   
  13.     int c[10];  
  14.     for (int i = 0; i < 10; i++)            //局部数组不初始化,是随机值  
  15.     {  
  16.         cout << c[i];  
  17.     }  
  18.     cout << endl;  
  19.   
  20.     int d[10] = { 0 };  
  21.     for (int i = 0; i < 10; i++)            //为0,未被显式初始化的元素默认为0,字符数组则是'\0'  
  22.     {  
  23.         cout << d[i];  
  24.     }  
  25.     cout << endl;  
  26.   
  27.     cout << b << endl;                     //按字符串方式输出,输出为空,不是空格,可以看出未初始化的全局数组元素为'\0'  
  28.     for (int i = 0; i < 10; i++)            //单个输出全为a  
  29.     {  
  30.         cout << b[i];  
  31.     }  
  32.     cout << endl;  
  33.   
  34.     char e[10] = { 'b' };                    
  35.     cout << e << endl;                     //按字符串方式输出,输出为b,可见未被显式初始化的元素为'\0'  
  36.     for (int i = 0; i < 10; i++)           //char局部数组,单个元素输出结果为baaaaaaaaa  
  37.     {  
  38.         cout << e[i];  
  39.     }  
  40.     cout << endl;  
  41.     char f[10];                            //char局部数组不初始化,输出为烫烫烫烫烫  
  42.     for (int i = 0; i < 10; i++)           
  43.     {  
  44.         cout << f[i];  
  45.     }  
  46.     cout << endl;  
  47.     return 0;  
  48. }  


版权声明:本文为love20165104027原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。