黑马程序员——IOS基础(数组)

来源:互联网 发布:js 数组转换json 编辑:程序博客网 时间:2024/05/30 22:51

<a target=_blank href="http://www.itheima.com" target="_blank" style="font-size: 14px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------</a>


一、一维数组的定义和一维数组元素的引用

     1.一维数组的定义

        类型名  数组名[整型常量表达式]

        例如:

        Int a[8];

       说明:(1)a数组含有8个元素,且每个元素都是整型。

                   (2)每个元素都有一个下标,第一个元素的下标总为0。

 

      2.一维数组元素的引用

         引用形式如下:

         数组名 [下标表达式]

         说明:(1)在引用数组元素时,数组元素中下标表达式的值必须为整数,下标表达式值的下限为0

                    (2)一个数组元素实质上就是一个变量名,代表内存中的一个存储单元,一个数组占有一串连续的存储单元

                    (3)一个数组不能整体引用,数组名是一个存放这个数组的首地址的常量

 

         3.一维数组的初始化

              Int a[8] = {0,1,2,3,4,5,6,7,}; /* 依次给数组元素赋初值 */

              Int a[8]= { 0 };                                     /* 当所赋初值少于所定义数组元素个数是,将自动给后面的元素补以初值0 ,

                                                                            如果所赋初值多于所定义数组的元素个数时,在编译时将给出错误信息*/

              Int a[ ]={0,0,0,0,0,0,0,0};                     /* 隐含定义了a数组含有8个元素 */

 

二、一维数组和指针

         1.一维数组和元素的地址

          在函数体中函数外部定义的数组名可以认为是一个存放数组元素第一个元素地址的指针变量,只是这个指针变量中的

      地址值不可改变,

          float  a[0], *p, x;

          a= &x; a++;               /* 这些操作都是非法的,不能给啊重新赋值。 */

          p= a+1;                     /* 指针p将指向数组中的第二个元素,可以通过表达式:a+k获取每个元素的地址 。 

                                                也可以通过 *(a+k)的形式来引用数组元素。 */


三、函数之间对一维数组和数组元素的引用。  

        1.数组元素作实参

              数组元素可以像普通变量一样作为实参传递给形参,对应的形参必须为同类型的变量。在函数中只对该变量进

        行操作而不能在函数中改变对应数组元素中的值。

        

        2.数组名作实参

               数组名可以作为实参传送,对应的形参应当是一个指针变量并且类型与数组类型一致。在函数中可以通过该指

        针变量来引用调用函数中对应的数组元素,从而对数组元素进行操作而改变其中的值。

         

         3.数组元素地址作为实参

            当数组元素地址作为实参时,因为是地址,所以对应的形参也应当是基类型相同的指针变量

          /* 对具有10个元素的char类型数组,从下标为4的元素开始,全部设置星号“ * ”,保持前4个元素中的内容不变。*/

                程序如下:

                 #include <stdio.h>

                 #define M 10

                 #define B 4

                 void setstar (char *,int):

                 void arrout (char *,int);

                 main( )

                 { char c[M]={'A','B','C','D','E','F','G','H','I'.'J'};

                 setstar (&c[4,M-B]);

                 arrout(c,M);

                  {

                     int i;

                     for(i=0;i<n;i++)

                           *(a+i)=' * ';

                   }

                 void arrout (char *a,int n)

                   {

                      int i;

                      for (i=0;i<n;i++)

                         printf("%c",a[i]);

                      printf("\n");

                    }

              程序运行结果如下:

                 ABCD******     

                

四、二维数组的定义和二维数组元素的引用

       1.二维数组的定义

          语句形式如下:

              类型名 数组名[常量表达式1] [常量表达式2],. . . . . . ;

              int  a[3][4];

          说明:(1)定义了一个名为a的二维数组。

                     (2)a数组中每个元素都是整型。

                     (3)a数组中共有3*4个元素。

                     (4)a数组的逻辑结构是一个具有如下形式的3行4列的矩阵

                                       第0列            第1列           第2列           第3列

                      第0行       a[0][0]           a[0][1]           a[0][2]          a[0][3] 

                      第1行       a[1][0]           a[1][1]           a[1][2]          a[1][3] 

                      第2行       a[2][0]           a[2][1]           a[2][2]          a[2][3] 


                 2.二维数组元素的引用

               引用形式:

                     数组名 [下标表达式1][下标表达式2]

                      有数组定义: double w[4][2];

                则w[0][1]、w[i][j]都是合法的数组元素引用形式,但每个下标表达式不能超越数组定义中的上、下界。


             3.二维数组的初始化

               可以在定义二维数组的同时给二维数组的各元素赋初值

                int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};            /* 所赋初值个数与元素个数相同 */

                int a[4][3]={{1,2},{4,5},{7},{10}};    /* 所赋初值个数少于元素个数,这时系统将自动给该行后面的元素补初值0  */

                int a[4][3]={{1,2},{4,5}};    /* 所赋初值行数少于数组行数,系统将自动给后面各行的元素补初值0 */

                int a[ ][ ]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}  /* 通过赋初值定义二维数组的大小 */

                    

             4.二维数组和指针

                  二维数组名同样也是一个存放地址常量的指针,其值为二维数组中第一个元素的地址。二维数组元素的地址可以由

             表达式&a[i][j]求得,也可以通过每行的首地址来表示。

                 若0<=i<3、0<=j<4,则a[i][j]的地址可以用以下五种表达式求得

                    (1)&a[i][j]

                      (2)a[i]+j

                      (3) *(a+i)+j

                      (4)&a[0][0]+4*i+j         /* 在i行前尚有4*i个元素存在 */

                      (5)a[0]+4*i+j

                   a数组可以用以下五种表达式来引用                  

                       (1)a[i][j]

                       (2) *(a[i]+j)

                       (3) *(*(a+i)+j)

                       (4) *(&a[0][0]+4*i+j)         

                       (5) *(a[0]+4*i+j)


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

0 0
原创粉丝点击