数组(一)

一、数组的定义

    定义:

              数组就是具有一定顺序关系的若干变量的集合。其中的每个变量,都被称为数组的元素。

    关键点:

            (1)组成数组的元素是若干个独立的变量。

            (2)这些变量的数据类型必须相同。

            (3)这些变量之间具有一定的顺序关系。

    分类:

            (1)数值数组

            (2)字符数组

            (3)指针数组

            (4)结构体数组

    注意:

            数组属于构造数据类型。

二、一维数组

    (1)一维数组的定义

            

                 定义:

                        存储类型  数据类型  数组名 [常量表达式];

                解释:

                        存储类型---指的是auto、register、static、extern。若省略,相当于auto

                        数据类型---任意一种基本数据类型或构造数据类型

                        数组名---数组的唯一标示

                        常量表达式---表示数组元素的个数,也称为数组的长度

                注意:

                        数组的数据类型实际上是数组元素的取值类型;

                        数组名应该符合标识符的命名规则,由字母、数字和下划线组成,但不能以数字开头;

                        数组名不能与其他变量名相同;

                        常量表达式只能是常量或常量表达式,如a[3+2];

                        允许在同一个类型说明中声明多个数组和多个变量。

    (2)一维数组的引用

                注意:

                        数组的引用实际上就是数组元素的引用。数组必须逐个元素的引用,不能整体引用。

                形式:

                        数组名 [下标]

                解释:

                        下标只能是整型常量或整形表达式,下标从0开始,范围是0~n-1,n为元素个数。

                下标越界:

                        数组的越界操作,相当于内存访问越界,造成的后果是无法估计的。

                        若越界访问的内存空间是空闲的,程序可能不受影响,仍然能正确运行。

                        若越界访问的空间已经被占用,且写了很重要的数据,在此情况下,若程序执行了非法写操作,

                        则程序可能会导致异常终止或崩溃。

                        若越界访问的空间已经被占用,程序只是执行了读操作,则程序可能继续运行下去,但是无法得到正确的结果。 

    (3)一维数组的初始化

            对于普通局部数组,若定义时,没有初始化,则数组中元素的值,是不确定的。

            对于static修饰的数组,若定义时,没有初始化,则数组中元素的值默认为0。

            对于全局数组,若定义时,没有初始化,则数组中元素的值默认为0。

            数组可以在定义时进行初始化:

                    int a[10] = {1,2,3,4,5,6,7,8,9,10};

            数组在定义时可以对其中的部分元素进行初始化:

                    当“{}”中的值的个数小于数组元素的个数,只对数组前面的元素进行初始化,剩余的元素被自动赋值为0。

                    int a[5] = {1,2}; //数组中前两个元素进行初始化,后三个自动赋值为0。

            若对数组中所有的元素都进行初始化,则可以省略数组的常量表达式,编译器会根据初始化列表自动计算

            数组元素的个数。

                    int a[] = {1,2,3,4,5,6,7,8,9,10};

           一次性将数组中的所有元素全部初始化为0:

                        》》》int a[10] = {0};

                        》》》使用库函数memset

                                    头文件:string.h

                                    实现:

                                               int a[10];

                                                memset(a,0,sizeof(a));

                        》》》使用库函数bzero

                                    头文件:strings.h

                                     实现:

                                                int a[10];

                                                bzero(a,sizeof(a));

    (4)一维数组的内存分配

                在内存中,数组元素占用连续的存储空间,并根据单个元素所占的存储空间来进行内存分配。

                数组名代表数组首元素地址(即数组的起始地址),相当于&a[0],是地址常量,对数组名求sizeof可以得到

                数组占用内存的总空间。

                数组元素个数 = sizeof(数组名)/sizeof(数据类型)  

          

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值