资源描述:
《C语言补充知识.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数组数组概述1、数组一组具有相同数据类型的数据的有序的集合。2、数组元素数组中的元素。数组中的每一个数组元素具有相同的名称,不同的下标,可以作为单个变量使用,所以也称为下标变量。在定义一个数组后,在内存中使用一片连续的空间依次存放数组的各个元素。数组概述3、数组的下标是数组元素的位置的一个索引或指示。4、数组的维数数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。5、数组的优点(1)可以让一组同类型的数据共有一个数组名,而不必为每一个数据都定义一个变量名。(2)数组的元素是按顺序存放的,在一些批量处理中使用方便。一维数组数组是一组
2、有序数据的集合,数组中每一个元素的类型相同。用数组名和下标来唯一确定数组中的元素。一维数组中的各个数组元素是排成一行的一组下标变量,用一个统一的数组名来标识,用一个下标来指示其在数组中的位置。下标从0开始。一维数组通常和一重循环相配合,对数组元素进行处理。一维数组定义方式:类型说明符数组名[整型常量表达式]例:inta[10]定义一个数组,数组名a,有10个元素,每个元素的类型均为int。这10个元素分别是:a[0]、a[1]、a[2]、a[3]、a[4]、....、a[8]、a[9]。一维数组注意:(1)C语言中,数组下标从0开始。(2)C语言不允许对数
3、组的大小做动态定义,如:intn;scanf("%d",&n);inta[n];错误因为在编译时,C编译器根据已知数组大小分配内存。一维数组说明:(1)数组名:按标识符规则。本例a就是数组名。(2)整型常量表达式:表示数组元素个数(数组的长度)。可以是整型常量或符号常量,不允许用变量。整型常量表达式在说明数组元素个数的同时也确定了数组元素下标的范围,下标从0开始~整型常量表达式-1(注意不是1~整型常量表达式)。一维数组C语言不检查数组下标越界,但是使用时,一般不能越界使用,否则结果难以预料(覆盖程序区-程序飞出,覆盖数据区-数据覆盖破坏,操作系统被破坏,
4、系统崩溃)。本例数组元素个数是10个,下标从0-9。一维数组(3)类型说明:指的是数据元素的类型,可以是基本数据类型,也可以是构造数据类型。类型说明确定了每个数据占用的内存字节数。比如整型2字节,实型4字节,双精度8字节,字符1字节。本例数组元素是整型,每个元素占2个字节,因为有10个数组元素,所以占用20字节。(4)C编译程序为数组分配了一片连续的空间。(5)C语言还规定,数组名是数组的首地址。即a=&a[0]指针10指针复习一、概念1、指针:指针就是地址,是变量、数组、函数在内存中占据的存储空间的首地址。2、指针变量:保存指针(地址)的变量。其定义形式
5、为:基类型说明*指针变量名;基类型说明指定了指针指向的变量类型,指向不同类型数据的指针的运算结果不同。指针本身没有类型,指向任何类型变量的指针都是用来保存地址的,在内存中占2字节。a(2000H)5p2000H指针变量名指针变量值变量名(地址)变量值例如:inta=5;int*p=&a;指针复习3、指针常量(1)数组名:数组在内存中占据一片连续的内存区域,数组名代表该片内存区域(该数组)的首地址,即数组中第一个元素(a[0])的地址。由于在程序开始运行时就为数组分配了内存区域,所以数组在内存中的地址不会改变,数组名作为该数组的首地址是固定的,即为一个指针常
6、量。(2)函数名:与数组类似,函数名代表了该函数在内存中的首地址,同样是一个指针常量。例如:inta[10],b;a=&a[3];a=&b;a++;max=a;以上语句都是错误的。指针复习4、指针运算符指针变量p保存了变量c的地址,则称指针变量p指向变量c,变量c称为指针变量p的目标变量。指针运算符*表示引用某指针变量指向的目标变量。例如:intd=5,*p;p=&d;printf(“%d”,*p);a(2000H)5p2000H目标变量p的值*p的值&a的值p指向a指针复习5、指针的运算指针的运算只能用于指向数组元素的指针。(1)指针加减一个整数例如:i
7、nta[5]={1,3,5,7,9},*p;p=a;//p指向数组元素a[0],保存a[0]的地址。*p等于1;p++;//p指向下一个数组元素a[1],*p等于3;p+=2;//p指向数组元素a[3],*p=7;p-=3;//p指向数组元素a[0]。p=&a[2];*(p+2)=?*(a+2)=?(2)指针与指针相减例如:p=&a[3];p-a=?指针复习二、指向数组的指针指针可以指向数组的首地址,也可以指向数组中任何一个元素。例如:输出数组中的元素。程序1:main(){inta[5]={1,3,5,7,9},i;for(i=0;i<5;i++)pri
8、ntf(“%dt”,a[i]);}a[0]a[1]a[2]a[3