zoukankan      html  css  js  c++  java
  • 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 }

  • 相关阅读:
    Spring中的AOP
    P2782 友好城市
    1576 最长严格上升子序列
    1058 合唱队形 2004年NOIP全国联赛提高组
    5294 挖地雷
    1643 线段覆盖 3
    4768 跳石头
    1026 逃跑的拉尔夫
    2727:仙岛求药
    codevs 4888 零件分组
  • 原文地址:https://www.cnblogs.com/ariel-dreamland/p/9023549.html
Copyright © 2011-2022 走看看