为什么需要数组

  • 为了解决大量同类型数据的存储和使用问题;
  • 为了模拟现实世界。

    数组不作为学习重点的原因

  • 数组的遍历和使用非常复杂,一般直接调用别人封装好的数组工具即可。

    数组的分类

    一维数组

    特征

  • 为n个变量连续分配存储空间;

  • 所有的变量数据类型必须相同;
  • 所有变量所占的字节大小必须相等

    一维数组的使用

    ```c
  • 初始化 完全初始化 int a[5] = {1,2,3,4,5}; 不完全初始化 —未被初始化的元素默认为零 int a[5] = {1,2,3}; 不初始化 —所有元素都是垃圾值 int a[5]; 清零 int a[5] = {0};

  • 数值间的元素复制 for(int i = 0;i < 5;i++) {

    1. a[i] = b[i];

    }

  • 数组名代表的是数组的第一个元素的地址

  • 错误写法 错误1 int a[5]; a[5] = {1,2,3,4,5}; //错误,只有在定义数组的时候,才可以整体赋值,其他情况下整体赋值都是错误的 错误2 int a[5] = {1,2,3,4,5}; a[5] = 100; // 错误,没有a[5]这个元素,最大是a[4]

  1. <a name="IX0uO"></a>
  2. ## 二维数组
  3. <a name="aEqxt"></a>
  4. ### 二维数组的使用
  5. ```c
  6. * 声明
  7. int a[3][4];
  8. * 代表的是:
  9. 数组包含了3x4个元素,可以当做3行4列看待,这12个元素的名字依次是:
  10. a[0][0] a[0][1] a[0][2] a[0][3]
  11. a[1][0] a[1][1] a[1][2] a[1][3]
  12. a[2][0] a[2][1] a[2][2] a[2][3]
  13. a[i][j]表示第i+1行第j+1列的元素
  14. int a[m][n]; //该二维数组的最大元素为a[m-1][n-1]
  15. * 初始化
  16. ** 初始化形式1
  17. int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
  18. ** 初始化形式2
  19. int a[3][4] = {
  20. {1,2,3,4},
  21. {5,6,7,8},
  22. {9,10,11,12}
  23. };
  24. * 输出二维数组的内容
  25. int a[3][4] = {
  26. {1,2,3,4},
  27. {5,6,7,8},
  28. {9,10,11,12}
  29. };
  30. int i,j;
  31. // 输出数组内容 --先输出列,再输出行
  32. for(i = 0;i < 3;i++)
  33. {
  34. for(j = 0;j < 4;j++)
  35. {
  36. printf("%d ",a[i][j]);
  37. }
  38. printf("\n");
  39. }

多维数组

是否存在多维数组?

不存在,因为内存是线性一维的。

  1. * n维数组可以当做 *每个元素是n-1维数组* *一维数组*
  2. int a[3][4];
  3. 该数组是含有3个元素的一维数组,只不过每个元素都可以再分成4个小元素;
  4. int a[3][4][5];
  5. 该数组是含有3个元素的一位数组,只不过每个元素都是45列的二维数组;