理学C大学基础教程.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《理学C大学基础教程.pptx》由会员分享,可在线阅读,更多相关《理学C大学基础教程.pptx(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 5.1 数组基本概念 第1页/共77页2023/2/2325.1数组基本概念n数组是具有一定顺序关系的若干相同类型元素的集合。n组成数组的变量称为该数组的元素。n数组元素都有相同的变量名(数组名),但是有不同的下标。第2页/共77页2023/2/233一维数组n一维数组的说明方法为数据类型加数组名,再加方括号,里面含有元素个数。即:类型说明符 数组名常量表达式;n数组名的命名规则和变量名相同。n常量表达式表示数组元素的个数,即数组长度。第3页/共77页2023/2/234一个字符数组例子n下面的代码说明一个字符数组:char a 5;n即:字符数组“char a5”,存储该数组占5个字节。每
2、个元素的类型是字符型。数组下标从0开始,分别是a0,a1,a2,a3,a4。n请注意:数组元素的下标从 0 开始。并且,a5不属于该数组的空间范围。第4页/共77页2023/2/235数组在内存中的存放n 数组元素都是存放在一片连续的内存单元中的。n下图显示 char name=”Ray Krebbs”的内存情况第5页/共77页2023/2/2365.1.2数组的定义n和变量相同,数组也必须先定义,后使用 定义数组的一般格式是:n类型说明符 数组名常量表达式常量表达式;n下面的语句定义了一个有五个整数的数组:int ages5;n 数组ages此时的内容是不确定的,编程中不能想当然地认为它全为
3、0或其他什么值。第6页/共77页2023/2/237定义数组应包括的几个方面n确定数组元素的类型n可以是如整型、浮点型等简单类型,也可以是结构体、类等用户自定义类型。n确定数组的名称n由“标识符”指定,数组名是一个常量,代表着数组元素在内存中的起始地址。n确定数组的结构n包括数组的维数(有几个常量表达式),维的大小等,也就是常量表达式的具体形式。常量表达式的值必须是正整数。第7页/共77页2023/2/238错误的数组定义语句nvoid VoidArray10;/void不可以做数组类型nint a=9;float floatArraya;/下标表达式不可以是变量nchar charArray
4、1.5+1.5;/3.0不是整数第8页/共77页2023/2/239例5.1 定义一个含10整数的数组n解:以ARRAY命名的数组,用100至109对数组元素赋值,并对其求和。需要在一个循环中使用数组。这是使用数组最经常的方式。nvoid main()n int ARRAY 10;n int sum=0;n for(int i=0;i10;i+)n ARRAYi=100+i;n sum+=ARRAYi;n n第9页/共77页 5.2 数组元素的下标 第10页/共77页2023/2/23115.2数组元素的下标n数组的元素是由下标来区分的。使用数组时,只能分别对数组的各个元素操作。n对于一个已经
5、声明过的数组,其元素的使用形式为:n 数组名下标表达式n例如salaries 6;int a=5;salariesa=10;第11页/共77页2023/2/2312注意n在使用数组元素时需要注意:n数组元素的下标表达式其结果必须为正整数。n数组元素的下标值不得超过声明时所定义的上下界。第12页/共77页2023/2/2313数组的下标n数组元素的下标是数组元素到数组开始地址的偏移量。n第1个元素的偏移量是0个数组元素大小,第2个元素的偏移量是1个数组元素大小,依次类推。n因此,数组元素是一系列大小相同的连续项,每项到公共基点(数组起始地址)的偏移量是固定的。第13页/共77页 5.3 数组初始
6、化 第14页/共77页2023/2/23155.3数组初始化n数组的初始化就是在定义数组时给部分或全部元素赋初值。n对于简单数据类型的数组,就是给数组元素赋值;n对于对象数组,每个元素都是某个类的一个对象,初始化就是调用该对象的构造函数。我们会在后面单独详细介绍。第15页/共77页2023/2/2316初始化数组的方法n在使用数组元素之前,必须先对它们赋值。n有以下两种初始化数组的方法:在定义数组时初始化在程序中对数组进行初始化第16页/共77页2023/2/2317全局数组初始化nC+自动将全局数组变量中的所有元素初始化为0或null。n一个全局的字符数组中的所有元素将为null(空),一个
7、全局的数字数组中的所有元素将为0。n程序中应尽量限制全局数组变量的使用。如果要用,最好用语句将其显式初始化为0第17页/共77页2023/2/23185.3.1数组成员的初始化n数组初始化时,用作初始化的数组元素值放在一个大括号中n例如:int a3=1,1,l;/含三个元素的整型数组,元素的值都是1第18页/共77页2023/2/2319注意n初始化值的个数可少于数组元素个数。没有被初始化的元素将赋值为0。n 初始化数组的值的个数不能多于数组元素个数,也不能用逗号来省略对部分元素的初始化,这种做法在C中是允许的,但在C+中不允许。第19页/共77页2023/2/2320错误例子nint ar
8、ray15=0,1,2,3,4,5;nint array25,1,2,3;nint array25=0,2,3,4;nint array35=;第20页/共77页2023/2/2321例例5.25.2初始化全局和局部数组n#include nusing namespace std;nint array15=1,2,3;nstatic int array25=1;nvoid main()n int arr15=2;n static int arr25=1,2;n int n;n cout global:n;n for(n=0;n5;n+)n cout array1n;第21页/共77页2023/
9、2/2322n cout nglobal static:n;nfor(n=0;n5;n+)n cout array2n;n cout nlocal:n;n for(n=0;n5;n+)n cout arr1n;n cout nlocal static:n;n for(n=0;n5;n+)n cout arr2n;n cout endl;nn运行结果为:nglobal:1 2 3 0 0 /全局数组初始化的结果nglobal static:1 0 0 0 0 /全局静态数组初始化的结果nlocal:2 0 0 0 0 /局部数组初始化的结果nlocal static:1 2 0 0 0 /局部静
10、态数组初始化的结果 第22页/共77页2023/2/23235.3.2在程序中进行初始化n 大多数情况下,在定义数组时并不知道它的内容,需要在程序中,由用户输入或读磁盘文件数据对数组进行初始化。这时,for循环语句是一个强有力的工具。n 在数组使用中,数组名不能出现在赋值语句中等号的左边。第23页/共77页2023/2/2324注意n不能直接把一个数组赋给另一个数组nsaved_sales=total_sales;/error n应使用一个循环语句将total_sales中的元素的值逐个赋给数组saved_sales中的每个元素for(int i=0;iARRAY_SIZE;i+)saved_
11、salesi=total_salesi;第24页/共77页2023/2/2325例5.3 将5个温度值赋给数组#includevoid main()float temp5;temp0=31.3;temp1=28.7;temp2=32.2;temp3=34.5;temp4=19.7;coutDaily temperature for 5 daysn;for(int i=0;i5;i+)couttempin;第25页/共77页2023/2/23265.3.3数组省略初始化方法有初始化的数组定义可以省略方括号中的数组大小。例如,下面的代码中数组定义为5个元素:int array=0,1,2,3,4;
12、第26页/共77页2023/2/2327数组的大小n编译时必须知道数组的大小。通常方括号内的数字决定了数组的大小。n有初始化的数组定义又省略方括号中的数组大小时,编译器统计花括号之间的元素个数,以求出数组的大小。例如,下面的代码产生相同的结果:int array15=0,1,2,3,4;int array2=0,1,2,3,4;第27页/共77页2023/2/2328大括号的使用n 通过使用大括号,可在定义时初始化任何一种类型的数组。n例如:double sales=4323.43,122355.32,343324.96;注意:上面这种使用大括号来初始化数组的方法只能在定义数组时使用。在数组定
13、义之后,就不能用这种方法了,而只能逐个元素地赋值。第28页/共77页2023/2/2329元素赋0n 如果在数组定义时,只对其中部分元素赋了初值,C+会自动将其余的元素赋0。n如果希望将一个大数组中的所有元素同时初始化为0,则可以在定义这个数组时,只将数组的第一个元素赋初值0。这样,系统会自动把其余的元素都赋为0。第29页/共77页 5.4 数组的大小和越界数组 第30页/共77页2023/2/23315.4数组的大小和数组越界n定义数组时,编译器必须知道数组的大小。n如果数组定义时省略了大小,只是由初始化的值来决定其大小。在程序中怎么知道数组的大小呢?nsizeof操作解决了该问题。第31页
14、/共77页2023/2/2332sizeofnsizeof()能够返回传递给它的数据类型所占用内存的字节数。n数组的大小可用用以下公式来计算:数组大小=sizeof(数组名)/sizeof(数组类型)所有元素所有元素所占内存所占内存每个元素每个元素所占内存所占内存第32页/共77页2023/2/2333例5.7 用sizeof确定数组的大小n#include nusing namespace std;nvoid main()n int a=1,2,4,8,16;n for(int i=0;i(sizeof(a)/sizeof(int);i+)n cout ai ;n cout endl;nn运
15、行结果为:n1 2 4 8 16第33页/共77页2023/2/2334数组和字符串n对于字符串的初始化,要注意数组实际分配的空间大小是字符串中字符个数加上末尾的0结束符。例5.8 比较字符串数组大小和字符串长度的差别。解:用sizeof计算数组大小,用strlen函数计算字符串长度。第34页/共77页2023/2/2335例5.8中 两个数组在内存中的存放int exemptions5=1,2,3,4,5;char sal_codes5=a,b,c,d,e;exemptions6=65;第35页/共77页2023/2/2336注意注意nC+允许对数组中的越界元素赋值,破允许对数组中的越界元素
16、赋值,破坏了其它数组的内容,这很危险坏了其它数组的内容,这很危险n防止的工作落在编程者的身上防止的工作落在编程者的身上第36页/共77页 5.5 字符数组 第37页/共77页2023/2/23385.5字符数组n我们知道,字符串常量是用一对双引号括起来的字符序列,每个字符占一个字节,并在末尾添加0作为结尾标记。第38页/共77页2023/2/23395.5.1字符数组定义nC+的基本数据类型变量中,没有字符串变量,而是使用字符型数组来存放字符串。n如果我们对数组进行初始化赋值时,在末尾放置一个0,便构成了C+字符串。第39页/共77页2023/2/2340例5.9 字符数组的初始化和使用#in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理学 大学 基础教程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内