数组

含义:有序数据的集合(这些数据之间存在内在联系,具有相同属性)

数组中每个元素具有相同的数据类型

1、定义一维数组

     比如:  int  a[10]      类型符  数组名[常量表达式]

     这样便向计算机申请了10个能存储整型数据的【连续】内存空间;强调:在计算机中,这些内存空间是连续的

     1)定义数组时[ ]中只能是常量或常量表达式  int  a=10;  int  b[a];   //错误

                                                                             #define N  10    int  b[N]  //正确  (#define为预处理,在编译之前完成)

     2)在被调函数中(自定义函数)定义数组,其长度可以是变量

                                                                             void max(int  n)

                                                                              {   int a[n];  }//在max函数中定义了一个有n个元素的数组,n由实参传递进来

2、引用一维数组

     先定义一个数组:  int  a[10]={0};

       引用形式:

       1)数组名[下标];    a[0]代表第1号元素

       2)数组名                 a 是数组首元素的地址 a+1表示元素a[1]的地址

                                        *a是取首地址里的值,同理 *(a+1)是取a[1]的值

       3)指针               int  *p=a;//定义一个和数组数据类型相同的指针 并让p指向数组的首地址

                                   p+1则表示a[1]的地址,*(p+1)是取a[1]的值

                                   同理   p[1]也可以引用a[1]元素的值

从上面就可以看出数组名的实质就是指针,只不过是常指针,意思是这个指针是一个常量

3、一维数组初始化

        1)定义式初始化:int a[10]={1,2,3,4,5,6,7,8,9,10};

                                       也可以只初始化一部分,其他会自动初始化为0;比如:int  a[10]={1,2,3};

                                       在定义时不指定数组长度:int  a[ ]={1,2,3,4,5,6,7,8,9,10};  //表示这个数组中有10个元素

————|||||||||||||||||||||————————||||||||||||||||||||||||||————————|||||||||||||||||||||||||||||||——————————||||||||||||||||||||||||||||||||————————|||||||||||||||||||————

二维数组

1、定义二维数组

类型说明符  数组名  [常量表达式][常量表达式]

可以这样理解:二位数组可以看成是一种特殊的一维数组,只不过它的元素又是一个一维数组

                         比如:int  a[4][3];

                          1)a是二维数组名,对a+1则表示特殊一维数组的下一个元素

                           a---------------->a[0],a[1],a[2],a[3](这里a[0],a[1]…的意义也是指针)

                          2)a[0]是一维数组名,对a[0]+1,加的是一个int 字节的元素

                          a[0]------------->a[0][0],a[0][1],a[0][2](这里a[0][0],a[0][1]表示的是元素)

                          a[1]------------->a[1][0],a[1][1],a[1][2]

                          a[2]------------->a[2][0],a[2][1],a[2][2]

2、内存分布:和一维数组相同,二维数组的内存分布也是连续的内存空间

                        二维数组中的元素排列的顺序是按行存放的,意思是:在内存中先顺序存放第一行的元素,紧接着存放第2行的元素(线性存放)

3、引用二维数组的元素(略)

4、二维数组的初始化

     分行赋值

      int a[3][2]={{1,2},{1,2},{1,2}};

     可以只对部分元素赋值

      int a[3][2]={{1}.{1,5},};  //对第一行的第一个元素,第二行的全部元素赋值

5、二维数组名也是一个常指针

      int  a[3][2];

      a是指向数组的第一个特殊元素(前面说过二维数组是一个特殊的一维数组,它的元素是一个一维数组)

       所以该数组名的指针类型是指向含有m个元素的一维数组的指针

       int (*p)[2]=a;

       p+1 相当于a+1

详见二维数组名和指针辩析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值