已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础:C语言,2009/2010第二学期 C语言课程组,版权所有,复制注明出处,上一章知识复习,讲述了指针声明符、指针变量的声明方法。 讲述了指针变量的两个关键点: 存放地址 “捆绑”一块内存空间 讲述了单重及多重指针的赋值。 讲述了指针访问所指内存空间中数据对象的方法 讲述const指针的用法。 简单阐述了空指针及通用指针的作用。 简单阐述了指针变量的运算。,本讲教学目标,掌握数组声明符、数组声明的方法。 掌握一维数组、二维数组在内存中的存储。 掌握通过下标方式访问数组中各元素的方法。 掌握通过指向数组的指针访问数组中各元素的方法。 掌握字符数组与其他内置类型数组之间的细微差别。 重点掌握指向数组的指针及指针数组的声明、使用。,版权所有,复制注明出处,版权所有,复制注明出处,本章授课内容,数组指针与指针数组,一维数组与字符串,二维数组,一维数组,数组的声明,版权所有,复制注明出处,本章授课内容,数组指针与指针数组,一维数组与字符串,二维数组,一维数组,数组的声明,数组的声明,请编写程序接受1000个整数,并找出其中的最大数。,版权所有,复制注明出处,问题: 如何定义1000个变量?,int a,b,c,d,e,f ?,数组的声明,版权所有,复制注明出处,/*源文件:demo7_1.c*/ #include #include #include #define MAX_COUNT 1000 int main(void) int numMAX_COUNT; /数组的定义方法 int i; int max = INT_MIN; printf(“请输入%d 个数,输完一个回车一次.n“, MAX_COUNT); for(i = 0; i max) max = numi; printf(“max = %dn“, max); system(“PAUSE“); return 0; ,数组的声明,数组声明符的一般语法: 直接声明符常表达式 直接声明符常表达式 (= 初值) 例7-1 分析下面语句,指出数组声明符的各元素 int p10; int *p5; int *const p20; double p3=2.2, 3, 4; double p34; double *const*const p45; float *p45;,版权所有,复制注明出处,数组的声明,注意: 数组中必须存放同类型的对象 数组中对象可以是数值、指针、字符、结构体等类型 数组中的元素还可以是另外一个数组 例如:请说明下列定义的含义 int p10; int *p5; int *const p20; double p34;,版权所有,复制注明出处,数组的声明,声明数组的方式: 不完整数组类型(方括号中是空的) 变长数组(限于C99) 数组声明符中使用类型限定符或static(限于C99),版权所有,复制注明出处,版权所有,复制注明出处,本章授课内容,数组指针与指针数组,一维数组与字符串,二维数组,一维数组,数组的声明,一维数组的存储,在数组声明符中,当仅出现一个中括号时,所声明的数组为一维数组,版权所有,复制注明出处,int arr5 = 11, 12, 13, 14, 15;,Demo7_2,一维数组的存储,一维数组注意: 数组中每一个元素的类型必须相同。 数组名的命名规则与普通标识符的命名规则相同。 常表达式的值为数组的大小,它表示数组中最多允许存放的元素个数。 数组名代表整个数组在内存中存储的首地址。,版权所有,复制注明出处,Demo7_3,一维数组存储,版权所有,复制注明出处,/*源文件:demo7_2.c*/ #include #include int main(void) int a10 = 11, 12, 13, 14, 15, 16, 17, 18, 19, 110; printf(“%dn“, sizeof(a); printf(“%dn“, sizeof( ,一维数组的初始化,一维数组的初始化形式: 可以在声明时初始化数组的全部元素 可以在声明时初始化部分元素 在声明数组时初始化可以省略数组长度 字符串数组初始化: 普通数组的初始化 实用字面值进行赋值 变长数组不可初始化,版权所有,复制注明出处,一维数组的初始化,版权所有,复制注明出处,注意: 1.数组初始化,右边用 ,元素用,间隔. 2.字符数组赋值时在内容后面自动加0。,一维数组存取练习,总结: 对于大小为N的一维数组p,取得第i个元素的方法 Pi-1 *(&pi-1) *(&p+i-1) 例7-2 编写程序从键盘上接收10个整数到一个一维数组中,之后,在屏幕上逐行输出这10个数,版权所有,复制注明出处,一维数组存取练习,版权所有,复制注明出处,/*源文件:demo7_3.c*/ #include #include #define ARRAY_SIZE 10 int main(void) int aARRAY_SIZE; int i; for(i = 0; i ARRAY_SIZE ; i+) printf(“请输入第%d 个数:“, i+1); scanf(“%d”, ,一维数组存取练习,例7-2 假设数组中元素为:10292, 23223, 99923,22,4234,348092,942,9934,请编程求出所有元素的和及平均值,版权所有,复制注明出处,一维数组存取练习,版权所有,复制注明出处,/*源文件:demo7_4.c*/ #include #include int main(void) int a =10292, 23223, 99923, 22, 4234, 348092, 942, 9934; int sum = 0; double average = 0; for(int i = 0; i 8; i+) sum += ai; average = sum*1.0 / 8; /*计算平均值*/ printf(“数组中元素的和为:%dn“, sum); printf(“数组中元素的平均值为: %fn“, average); system(“PAUSE“); return 0; ,累加器 初值为0,数组本身没有检查越界的功能,程序员需要自己控制上界和下界,数组练一练,练习1:输入10个整数。找出数组的最大值。 练习2:输入10个整数。对数组排序。 练习3:输入10个整数。将数组逆制。 练习4:输入10个整数。添加删除元素。,版权所有,复制注明出处,版权所有,复制注明出处,本章授课内容,数组指针与指针数组,一维数组与字符串,二维数组,一维数组,数组的声明,二维数组的存储,在数组声明符中,当仅出现两个中括号时,所声明的数组为二维数组,版权所有,复制注明出处,int a23;,二维数组的存储,版权所有,复制注明出处,int a23 =1,2,3,4,5,6;,二维数组的存储,版权所有,复制注明出处,demo7_4,a,&a,a0,&a0, a00,&a00各表示什么含义呢?,int a23;,二维数组的存储,&a 表示数组地址。 a 表示首行地址。 &a0 表示首行地址。 a0 表示行首元素地址。 a00 表示首元素。 &a00 表示首元素地址。,版权所有,复制注明出处,二维数组的存储,总结: 二维数组在内存中仍然是按一维数组的方式存储的 pij在内存中是数组的第i*M+j+1个元素 二维数组在内存中是按行存储的 二维数组的第x个元素,是px/Mx%M 二维数组中的元素的类型必须相同 数组名的命名规则与普通标识符的命名规则相同 pij是数组中第i+1行第j+1列的元素 数组名代表整个数组在内存中存储的首地址,版权所有,复制注明出处,二维数组的初始化,二维数组的初始化形式: 声明数组的时候可以同时对数组进行初始化,即指定数组中的若干或全部元素 在初始化时,可以省略二维数组声明符中第一个中括号的常表达式 字符串数组初始化: 普通数组的初始化 实用字面值进行赋值 变长数组不可初始化,版权所有,复制注明出处,二维数组初始化,例7-4 请观察下面的声明语句。 int a134 = 1,2,3,4, 5,6,7,8, 9, 10, 11, 12; int a234 = 1,2,3,4,5,6,7,8,9,10,11, 12; int a333 = 1, 2, 3; int a433 = 1, 2, 0, 3; int a53 = 1, 2, 3, 4, 5; int a63 = 1, 2, 3, 4, 5, 0; char a735 =a,b,c,d, 0, e,f,g,h,0, i,j,k,l, 0; char a835 =“abce”, “efgh”, “ijkl”;,版权所有,复制注明出处,二维数组的存储练习,总结: 对于pNM: pij的等价形式为: *(&pij)、*(pi +j)、*(&p00+i*N +j) &pij的等价形式为: pi + j、&p00+i*N +j,版权所有,复制注明出处,二维数组的存储练习,例7-8 声明一个4 行3 列的二维数组,从键盘上依次接收12 个数到该数组中。 此后,以二维的方式在屏幕上显示出二维数组中的各元素,版权所有,复制注明出处,二维数组的存储练习,版权所有,复制注明出处,/*源文件:demo7_5.c*/ #include #include #define ROW_COUNT 4 /*ROW_COUNT 代表二维数组的行大小*/ #define COL_COUNT 3 /*COL_COUNT 代表二维数组的列大小*/ int main(void) int aROW_COUNTCOL_COUNT; for(int i = 0; i ROW_COUNT * COL_COUNT ; i+) printf(“%d 行,%d 列:“, i/COL_COUNT + 1, i%COL_COUNT + 1); scanf(“%d“, ,二维数组的存储,版权所有,复制注明出处,注意: 1.如何在一重循环体内存取二维数组 2.如何在二重循环体内存取二维数组,问题: 如何将二维数组P34转变成一维数组Q12?,版权所有,复制注明出处,本章授课内容,数组指针与指针数组,一维数组与字符串,二维数组,一维数组,数组的声明,一维数组与字符串,用于存放字符的一维数组称为一维字符数组 字符数组的初始化: 传统的字符集合方式 字符串字面值方式,版权所有,复制注明出处,/*源文件:demo7_7.c*/ #include #include /为使用system函数 #define ARRAY_SIZE 100 /*一维字符数组a 的长度*/ int main(void) char aARRAY_SIZE; printf(“输入字符串(不能含有空格,长度不超过%d):“, ARRAY_SIZE); scanf(“%s“, a); printf(“你刚才输入的字符串为:%sn“, a); system(“PAUSE“); return 0; ,版权所有,复制注明出处,本章授课内容,数组指针与指针数组,一维数组与字符串,二维数组,一维数组,数组的声明,指针数组与数组指针,int *p10; int a10; int *p = a; int a10; int (*p)10 = ,版权所有,复制注明出处,问题: 如何区分指针的数组、指向数组的指针、指向特定长度数组的指针?,指针数组与数组指针,版权所有,复制注明出处,注意: 函数与数组声明符的优先顺序高于指针声明符,通过优先级可以区分.,int *p10; int *p = a; int (*p)10 = ,Demo7_9,指向特定长度数组的指针,例7-10 有一个二维数组int a43=3, 16, 87, 65, 4, 32, 11, 108, 10, 25, 27,12;,请编程找出各行的最大值,版权所有,复制注明出处,指向特定长度数组的指针,版权所有,复制注明出处,/*源文件:demo7_8.c*/ #include #include #include #define ROW_COUNT 4 /*ROW_COUNT 代表二维数组的行大小*/ #define COL_COUNT 3 /*COL_COUNT 代表二维数组的列大小*/ int main(void) int aROW_COUNTCOL_COUNT = 3,16,87, 65,4,32, 11,108,10 ,25,27,12; int maxROW_COUNT; int (*p)COL_COUNT = 0; int *q = 0;,指向特定长度数组的指针,版权所有,复制注明出处,for(int i = 0; i ROW_COUNT; i+) p = ,指向特定长度数组的指针,版权所有,复制注明出处,注意: 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年物流运输管理实战习题
- 分部(子分部)工程质量验收记录
- 广东大湾区一模-2026届高三-2026年1月-数学-答案
- 黑龙江省青冈县第一中学2027届物理高三第一学期期中监测模拟试题含解析
- 湖南省长沙大学附属中学2026-2027学年高二上学期开学考试历史试卷(含答案)
- 广西桂林市2025-2026学年高一下学期期末考试 语文试题(含答案)
- 测试环境布置标准指南
- 2027届广东省汕头市潮阳区潮师高级中学高一上物理期中经典试题含解析
- 2026年山东省济南市公安招聘辅警考试试题及答案
- 2026年内蒙古自治区呼和浩特市辅警人员招聘考试试题解析及答案
- 《AI 新媒体运营》 课件全套 项目1-8 走进新媒体运营-小红书运营综合实战
- 2024年陕西延长石油招聘笔试真题
- 《物业承接查验》课件
- 沪科黔科版《综合实践活动》5上学会自我保护 第一课 走近《中华人民共和国未成年人保护法》课件
- 食品委托经营合同模板
- DL-T+474.3-2018现场绝缘试验实施导则 介质损耗因数tanδ试验
- 2023-2024鄂教版六(上)劳动技术 第1课 我的服饰巧搭配【课件】
- 人教版九年级英语上册阅读理解10篇(含答案)
- 物业管理理论与实务备课教案
- 回归突破:“生命实践”教育学论纲
- 江口县官和乡100万羽蛋鸡养殖基地项目环评报告
评论
0/150
提交评论