C语言之数组

数组

           数组就是在内存空间中,开辟一个大的空间,然后再将这个大的空间均的分为若干份的小空间,每个小空间用来保存一个数据.

 

1). 数组的专业术语:

                     长度:指的能存放数据的个数

                     下标/索引:每一个数据所在小空间的编号

                     元素:每个小空间里面实际存放的数据

2). 数组的声明和赋值

A.声明

                      类型 数组名[要保存的数据的个数];

                      例: int scores [5];               //代表一个保存了五个int类型数据的数组,数组名为scores;

                            char chs [5];               //代表一个保存了五个char类型数据的数组,数组名为chs;

                                float fs [5];                   //代表一个保存了五个float类型数据的数组,数组名为fs;

 

B.赋值

       a.对声明完成的数组进行逐一赋值

                     数组名 [下标] = 数据;

                     例:int scores[5];

                                scores[0] = 100;                  //为下标为0的元素赋值为100

                                           scores[1] = 1;

                                …………

                                scores[4] = 100;

                    

  注:数组的下标总是从0开始,下标最大的数为数组的长度减1;

          

       b.在数组声明的时候就初始化

                     语法

 

              1.

                     类型 数组名[长度] = {数据1,数据2,数据3,…..数据n};

                            注:长度有多少个,数据就写多少个

                     例: int scores [5] = {90,93,23,54,65}; // 数据会从0开始依次赋值

              2.

                     类型 数组名[] = {数据1,数据2,数据3,…..数据n};

                            注:编译器会自动根据右边花括号中得数据个数确定你数组的长度

                     例: int scores [] = {90,93,23,54,65}; // 长度为5

                            char chs [] = {'a','b','c'}; //长度为3

     3.

                     类型 数组名[5] = {数据1,数据2};//数据不足5个

                     例: int scores [] = {90,93}; // 这样赋值,只有下标0和1有值,分别是90和93,其他元素没有值,系统会为这些没有没有值的元素初始化为0

                            注:部分初始化的话,其他没有赋值的元素会被初始化为0

     4.

                     类型 数组名[5] = { [4] = 数据,[3] = 数据,[2] = 数据,[1] = 数据,[5] = 数据};            //这种是人为的指定给下标为几的元素赋值

                     例: int scores [5] = {[4] = 45,[3] = 67,[2] = 89,[1] = 27,[5] = 86};

                            注:很少这样用

3). 数组的取值

                     语法:        数组名 [下标];

                     例:   nums [0]; //取的下标为0的元素    也是就是数组种第一个数据           

          nums [3]; //取的下标为3的元素   也就是数组中第四个数据

4). 遍历数组

                     就是代表循环这个数组依次的访问每个元素

 

    例:

                     int scores [5] = {89,76,88,50,99}

                     for(int i = 0;i < 5; i++){

                                printf(“%d\n”,scores[i]);// i的值依次是0,1,2,3,4,刚好对应上面访问的下标

        }

5). 数组的越界

                     越界:就是访问了不属于自己的空间,可能会造成无法预知的后果,要么就是破坏了别的数据,要么就是运行报错

 

                     例: int scores [5] = {89,76,88,50,99}

                                scores[10] = 200;               //越界了

6). 数组长度的公式

                     数组占用的总字节数 / 每一个元素占用的字节数 = 小空间的个数(数组的个数)    

                     sizeof(数组名)  /  sizeof(数组类型)  

 

       注:sizeof不是函数,是运算符   

 

7). 数组作为函数的参数   **********

                     声明数组的时候是必须写长度的,但是把数组作为函数的参数时,定义形参的时候,可以不写长度,代表所有长度同类型的数组都可以传过去.

 

           注:在C语言中,除了数组以外,都是值传递,而数组的传递是引用的传递,所以形参的值发生变化,实参的值也会发生改变;但是数组的元素就是一个普通的变量,所以如果是数组的元素作为函数的参数时,同样是值传递;

posted @ 2016-11-01 15:49  zero的小纸条  阅读(2641)  评论(0编辑  收藏  举报