目录
为什么使用数组(Array)?
一维数组的定义
一维数组的初始化
一维数组元素的访问
一维数组元素的赋值
数组的逻辑存储结构
数组的物理存储结构
二维数组的定义和初始化
为什么使用数组(Array)?
 
 
一维数组的定义
 一维 数组的定义  
 
  
  int  a[10]; 
  定义一个有 10 个 int 型元素的一维数组 
  – 在内存中分配连续的存储空间给此数组  
  为什么数组下标从 0 开始?  
  – 使编译器的实现简化一点,且下标的运算速度少量提高  
            问题:如果希望下标从 1 到 10 而非从 0 到 9 ,怎么办? 
  int  a[ 11 ];  
 
  
  int  a[ n ]; 
  最好用宏定义 
  # define  N  10  
  int  a[ N ];  
   # define  N  11  
  int  a[ N ]; 
      数组的 数据类型 ——每一元素占内存空间的字节数  
  数组的 存储类型 ——内存的动态、静态存储区或 CPU 的寄存器  
  
  一维数组在内存中占用的字节数为:数组长度×  sizeof (基类型) 
   一维数组的初始化
 未初始化的数组元素值是什么?  
  静态 数组和 全局 数组自动初始化为0值,否则,是随机数 
   一维数组的初始化  
  int  a[5] = {62, 74, 56, 88, 90};  
  int  a[5] = {62, 74}; int  a[5] = {62, 74, 0, 0, 0}; 
  int  a[ ] = {62, 74, 56, 88, 90}; 
   更高效的数组初始化方法  
  memset (a, 0, sizeof(a));  
  •  用 sizeof(a) 来获得数组 a 所占的内存字节数  
  •  #include <string.h> 
  一维数组元素的访问
 int  a[5] = {62, 74, 56, 88, 90}; 
  
  一维数组的引用  
  数组名[ 下标 ]  
   允许快速随机访问  
  引用时下标允许是 int 型变量或表达式  
  62 74 56 88  a[i] 
  一维数组元素的赋值
 问题:如何使两个数组的值相等?  
  int a[4] = {1,2,3,4};  
  int b[4];  
  b = a; 
   方法2:通过循环语句赋值  
   int i;  
   for (i=0; i<4; i++)  
  {  
  b[i] = a[i];  
  } 
   方法1:逐个元素赋值  
  b[0]=a[0];  
  b[1]=a[1];  
  b[2]=a[2];  
  b[3]=a[3];  
   更高效的数组赋值方法  
  memcpy (b, a, sizeof(a));  
  •  数组 a 复制给数组 b 
  #include <string.h> 
  数组的逻辑存储结构
 一维数组:  int a[5];  
  用一个下标确定元素位置 
   二维数组 : int b[2][3];  
  用两个下标确定元素位置  
    
  
 数组的物理存储结构

二维数组的定义和初始化
 int  a[ ][4] = {1,2,3,4,5,6,7,8,9,10,11,12};  
  int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};  
  int  a[ ][4] = {{1,2,3},{4,5},{6}};  
  int a[3][4] = {{1,2,3,0},{4,5,0,0},{6,0,0,0}};