C++ code:数组初始化

具有初始化的数组定义,其元素个数可以省略,即方括号中的表达式可以省略。这时候,最后确定的元素个数取决于初始化值的个数。例如:

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a[] = {1,2,3,4,5};
 6     for (int i = 0; i < sizeof(a) / sizeof(a[0]); ++i)
 7         cout << a[i] << " ";
 8     cout << "
";
 9     cin.get();
10     return 0;
11 }

运行结果:

程序中,用了sizeof(a),即a数组的字节数。还有sizeof(a[0]),即第一个元素所占空间的字节数,因为是整形数组,所以相当于sizeof(int),在32位编译器中整形数程度长度为4。a数组有若干个元素,每个元素有sizeof(a[0])个字节,所以两者相除就是元素个数。这样表示的用意在于可维护性。(因为数组元素个数随着编程需要可能也会变化。在稍大一点的编程中,输入过程与处理过程往往分离,即中间相隔许多语句,所以,并不能一下子直观得看到数组元素个数的值,而根据数组名和其元素的信息,获取元素个数的方式,就带有很好的通用性。for循环的结构描述就无须跟着数组的初始化变动而改动了)

数组默认值:

对于没有初始化的数组,分两种情况:一种是全局数组和静态数组,也就是在函数外部定义的,或者加上static修饰的数组定义,其元素总是全被清零:另一种是局部数组,就是在函数内部定义的数组,它们的值是不确定的。例如:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int array1[5] = { 1, 2, 3 };
 5 int array2[5];
 6 
 7 int main()
 8 {
 9     int array3[5] = {2};
10     int array4[5];
11 
12     cout << "array1: ";
13     for (int i = 0; i < 5; ++i)
14         cout << array1[i] << " ";
15 
16     cout << "
array2: ";
17     for (int i = 0; i < 5; ++i)
18         cout << array2[i] << " ";
19 
20     cout << "
array3: ";
21     for (int i = 0; i < 5; ++i)
22         cout << array3[i] << " ";
23 
24     cout << "
array4: ";
25     for (int i = 0; i < 5; ++i)
26         cout << array4[i] << " ";
27 
28     cout << "
";
29 
30     cin.get();
31     return 0;
32 }

数组的这种初始化规定方式源于程序运行的空间布局,函数中的局部数组是随着函数调用而创立的,而函数外部的数组是在整个程序运行中起作用的,驻于全局数据区,在运行起始时为0。

二维数组:

使用二维数组,可以按行、列下标访问对应元素。例如:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int array1[2][3] = {1,2,3,4,5};
 7     int array2[2][3] = { { 1, 2 }, {4} };
 8 
 9     cout << "array1: ";
10     for (int i = 0; i < 2; ++i)
11     for (int j = 0; j < 3; ++j)
12         cout << array1[i][j] << ", ";
13 
14     cout << "
array2: ";
15     for (int i = 0; i < 2; ++i)
16     for (int j = 0; j < 3; ++j)
17         cout << array2[i][j] << ", ";
18 
19     cout << "
";
20 
21     cin.get();
22     return 0;
23 }

原文地址:https://www.cnblogs.com/ariel-dreamland/p/9023549.html