昨晚上了数组的课程,说实话二级过了的我,谈起数组和指针还是有点畏惧的,今天刚好没课,来把昨天学的数组的
小BOBI2010.01.03
2010年新年快乐
BOBI是个乖孩子~
每次你认真跟他讲话的时候,
仿佛都能听懂……~
新年来了!
希望内心的小小心愿可以实现……
BOBI是个乖孩子~
每次你认真跟他讲话的时候,
仿佛都能听懂……~
新年来了!
希望内心的小小心愿可以实现……
BOBI是个乖孩子~
每次你认真跟他讲话的时候,
仿佛都能听懂……~
新年来了!
希望内心的小小心愿可以实现……
希望内心的小小心愿可以实现……
仿佛都能听懂……~
新年来了!
希望内心的小小心愿可以实现……
希望内心的小小心愿可以实现……
课程做一个小结吧。
首先明确数组的定义:数组是指在可以在内存中连续存储多个元素的结构,与变量不同的是变量是存取一个变量的容器;并且需要注意的是数组中所有的元素是具有相同的结构类型。数组的定义与变量相同 存储类别:类型标识符:数组名标识符【常量表达式】, 如定义一个整型数组有5个元素,int
a[5]
存储类别说明了数组元素的存储属性,即数组的作用域和生成期。可以是静态的static,自动auto的,外部extern的,当然自动的可以省略。类型说明符,说明数组元素的数据类型。可以是所有的基本类型,如int
、char、float、long、unsigned。数组名标识符,定义数组元素的名字。常量表达式是数组的元素个数,也称数组长度。
数组的一般形式:数组名【下标】,下标的取值范围众所周知的是从0取到数组元素的个数减一;如a[0],a[1],a[2],a[3],a[4]都是a[5]的元素。
数组的分类:一维数组和多维数组;
数组的引用:1、数组的下标值应在0至元素个数减一的范围内;
2、数组的元素可以像普通变量那样使用。
3、对数组元素的输入输出或赋值只能对单个元素进行,不能对整体进行操作。切忌不要对数组元素进行这样输入。scanf("%d",a);这样输入的是代笔着数组a是我起始地址,这是表达从键盘输入一个数a到所对应的内存单元,即输入第一个数a[0],scanf("%d",&a[0]);同理printf也不能完成对整个数进行输出的操作,需要经过一个for循环,完成此项操作。
一维数组的初始化:在编译阶段进行,不占用运行时间。分为几类:
1:定义并赋值:a[5]={1,2,3,3,4};static char ch[3]={'p','q','q'}
2: 给部分元素赋值 static int a[5]={7,6};
3:对全部元素赋初值的时候可以不指定数组的长度,C语言编译系统自动根据初值个数来决定数组长度。int[]={1,2,3}需要注意的是:a[]={},系统并不为其分配内存空间;如果不对自动数组初始化,则其初始值为系统自动分配给数组的各元素的内存单元的初始值,不可预知;若一个静态的或外部的数组不进行初始化,则对数值型数组,隐含值为0,对字符型数组,隐含值为‘、0’空字符。此外,当数组的长度和初值个数不相等的时候必须指定数组的长度。
数组的存储:系统为数组分配内存中的一片连续的存贮单元,诸元素按下标从小到大的顺序排列。
二维数组的的定义和一维数组一样:存储类别:类型标识符:数组名【常量表达式1】【常量表达式2】;
二维数组的表达形式:数组名【下标1】【下标2】
二维数组的引用:下标1称为行下标,下标2称为列下标。每一维的下标都不能超出定义的范围,对二维数组来说同样要注意下标越界的问题,系统不会检验越界的问题。
二维数组的存储:系统为数组在内存中分配一篇连续的内存空间,将二维数组诸元素按行的顺序分配类存区域。
二维数组的初始化:1:将各个元素初始值按照相应的顺序写在一个花括号里面,各初值用花括号隔开,按数组元素排列顺序给各元素赋值。static
int a[3][2]={0,1,2,3,4,5};
2:根据二维数组的特点,分行给二维数组赋值,具体方法是将每行元素以逗号隔开,写在花括号里面,写在括号内,,每个花括号的数据对应每一行的元素。static
int a[3][2]={{0,1},{2,3},{4,5}}
3:可以只对部分元素初始化,没有初值对应的元素将赋0或空字符。static int
a[3][2]={{1,2},{4},{5,3}}.
4:给元素赋值的时候可以不指定第一维的大小,但是不可以不指定第二维的大小。