一:用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;
}三:数组不初始化的默认值
- #include <iostream>
- using namespace std;
- int a[10];
- char b[10];
- int main()
- {
- for (int i = 0; i < 10; i++) //int全局数组不初始化默认为0
- {
- cout << a[i];
- }
- cout << endl;
- int c[10];
- for (int i = 0; i < 10; i++) //局部数组不初始化,是随机值
- {
- cout << c[i];
- }
- cout << endl;
- int d[10] = { 0 };
- for (int i = 0; i < 10; i++) //为0,未被显式初始化的元素默认为0,字符数组则是'\0'
- {
- cout << d[i];
- }
- cout << endl;
- cout << b << endl; //按字符串方式输出,输出为空,不是空格,可以看出未初始化的全局数组元素为'\0'
- for (int i = 0; i < 10; i++) //单个输出全为a
- {
- cout << b[i];
- }
- cout << endl;
- char e[10] = { 'b' };
- cout << e << endl; //按字符串方式输出,输出为b,可见未被显式初始化的元素为'\0'
- for (int i = 0; i < 10; i++) //char局部数组,单个元素输出结果为baaaaaaaaa
- {
- cout << e[i];
- }
- cout << endl;
- char f[10]; //char局部数组不初始化,输出为烫烫烫烫烫
- for (int i = 0; i < 10; i++)
- {
- cout << f[i];
- }
- cout << endl;
- return 0;
- }
版权声明:本文为love20165104027原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。