上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 06 C语言数组

Lecture6一C数组 绳伟光 微纳电子学系 上海交通大学 2017-03-14 1/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lecture 6 — C 数组 绳伟光 微纳电子学系 上海交通大学 2017-03-14 1 / 41

提纲 维数组 多维数组 常量数组 扑克选牌示例 5 *变长数组 2/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 提纲 1 一维数组 2 多维数组 3 常量数组 4 扑克选牌示例 5 ∗变长数组 2 / 41

提纲 一维数组 多维数组 常量数组 扑克选牌示例 变长数组 ¥口卡9,¥于,年20QC 3/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 提纲 1 一维数组 2 多维数组 3 常量数组 4 扑克选牌示例 5 ∗变长数组 3 / 41

标量(Scalar Variables)vs聚集量(Aggregate Variables) 。标量:只持有一个数据项 ·C支持聚集量,聚集量中存储了多个值 ·C中的两类聚集量:数组(arrays)和结构(structures) 。在C,一维数组(one-dimensional arrays)比多维数组 (multidimensional arrays)更重要 4/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 标量 (Scalar Variables) vs 聚集量 (Aggregate Variables) 标量:只持有一个数据项 C 支持聚集量,聚集量中存储了多个值 C 中的两类聚集量:数组 (arrays) 和结构 (structures) 在 C,一维数组 (one-dimensional arrays) 比多维数组 (multidimensional arrays) 更重要 4 / 41

一维数组 ·数组是一种存储了相同类型数据值序列的数据结构 。数组中存储的值称为元素(elements),这些元素可以通过 它们在数组中的位置进行单独的访问 ·最简单的数组是一维数组 ·一维数组的元素可以从概念上认为一个挨一个的存储在一行 或者一列中: a 5/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 一维数组 数组是一种存储了相同类型数据值序列的数据结构 数组中存储的值称为元素 (elements),这些元素可以通过 它们在数组中的位置进行单独的访问 最简单的数组是一维数组 一维数组的元素可以从概念上认为一个挨一个的存储在一行 或者一列中: 5 / 41

数组声明 。声明数组既要指定元素的类型,还要指定元素的个数: int a[10]; ·数组元素可以是任何类型,数组长度(元素个数)可以是任何 整型常量表达式 ·经常用宏来定义数组元素的个数 #define N 10 int a[N]; 6/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 数组声明 声明数组既要指定元素的类型,还要指定元素的个数: int a[10]; 数组元素可以是任何类型,数组长度 (元素个数) 可以是任何 整型常量表达式 经常用宏来定义数组元素的个数 #define N 10 ... int a[N]; 6 / 41

数组下标(Subscripting) ·为了访问某个数组元素,用数组名后跟中括号,中括号内是 表示元素在数组中位置的整数或整型常量表达式 ●上述操作被称为数组下标(subscripting)或索引(index- ing)操作 ●对于内含N个元素的数组,其下标的范围为0到N-1 。对于包含10个元素的数组a,其元素依次为:a[0],a[1], a[9] a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9] 7/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 数组下标 (Subscripting) 为了访问某个数组元素,用数组名后跟中括号,中括号内是 表示元素在数组中位置的整数或整型常量表达式 上述操作被称为数组下标 (subscripting) 或索引 (indexing) 操作 对于内含 N 个元素的数组,其下标的范围为 0 到 N-1 对于包含 10 个元素的数组 a,其元素依次为:a[0], a[1], . . ., a[9] 7 / 41

数组下标操作 。表达式a[i]是左值(Ivalues),可以像正常的变量一样使 用 a[0]=1; printf("%dIn",a[5]); +a[i]; 。通常,如果一个数组的基本类型为T,其任何一个元素都可 以当作一个T类型的变量使用 8/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 数组下标操作 表达式 a[i] 是左值 (lvalues),可以像正常的变量一样使 用 a[0] = 1; printf("%d\n", a[5]); ++a[i]; 通常,如果一个数组的基本类型为 T,其任何一个元素都可 以当作一个 T 类型的变量使用 8 / 41

数组下标操作(续) ·很多程序包含依次处理数组中元素的循环 。操作N元素数组的示例: for (i=0;i<N;i++) a[i]=0;/clears a * for (i=0;i<N;i++) scanf("%d",&a[i]);/*reads data into a * for (i=0;i<N;i++) sum +a[i];/sums the elements of a * 9/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 数组下标操作 (续) 很多程序包含依次处理数组中元素的循环 操作 N 元素数组的示例: for (i = 0; i < N; i++) a[i] = 0; /∗ clears a ∗/ for (i = 0; i < N; i++) scanf("%d", &a[i]); /∗ reads data into a ∗/ for (i = 0; i < N; i++) sum += a[i]; /∗ sums the elements of a ∗/ 9 / 41

数组越界 ·C不检查数组访问下标的范围是否合法,因此下标越界会导 致未定义行为 ·C系列语言中程序员常犯的错误是忘记N元素数组的下标范 围是从0到N-1,而不是从1到N int a[10],i; for(i=1;i<=10;1++) a[i]=0; 在有些编译器中,上述代码可能引起无限循环,因为内存分配时 ⅰ可能恰好在数组a后面,也就是a[10]的位置,从而导致i又 变回0! 10/41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 数组越界 C 不检查数组访问下标的范围是否合法,因此下标越界会导 致未定义行为 C 系列语言中程序员常犯的错误是忘记 N 元素数组的下标范 围是从 0 到 N-1,而不是从 1 到 N int a[10], i; for (i = 1; i <= 10; i++) a[i] = 0; 在有些编译器中,上述代码可能引起无限循环,因为内存分配时 i 可能恰好在数组 a 后面,也就是 a[10] 的位置,从而导致 i 又 变回 0! 10 / 41
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 05 C语言语句.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 03 C语言数据类型.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 02 C语言简介.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 15 输入输出.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 14 内存检测、剖面分析.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 13 高级指针.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 12 结构、联合与枚举.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 11 字符串.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 10 C程序调试.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 01 课程简介及编程基础(绳伟光).pdf
- 机械工业出版社:计算机科学丛书《计算机组成与设计:硬件、软件接口》电子教材(中文第4版).pdf
- 《计算机系统结构》课程教学资源(电子书籍)《Computer Systems》A Programmer's Perspective(Randal E. Bryant、David R. O'Hallaron,THIRD EDITION).pdf
- 《计算机系统结构》课程教学资源(电子书籍)《Computer Organization and Design》THE HARDWARE / SOFTWARE INTERFACE(DAVID A. PATTERSON JOHN L. HENNESSY,Fourth Edtion,彩色版).pdf
- 《中文信息学报》:中文组织机构名称与简称的识别.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲义)方波生成器项目报告书.doc
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第8讲 Windows应用程序设计.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第7讲 C++类(2/2).pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第6讲 C++类(1/2).pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第5讲 指针与引用.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第4讲 数组与结构.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 07 函数.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 08 指针.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 09 C程序组织.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 01 算法设计与分析基础.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 01 Greedy and Dynamic Programming.pptx
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 02 Divide and Conquer.pptx
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 04 C语言运算符与表达式.pdf
- 《C程序与算法设计》课程教学资源(学习资料)快乐的Linux命令行.pdf
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)01 ROS系统安装.doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)02 ROS基本元素实验(一).doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)03 ROS基本元素实验(二).doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)04 调试和可视化.doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)05 外部设备的使用.doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)06 机器视觉.doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)07 机器人建模与仿真.doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)08 机器人导航包.doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)09 机械臂规划Moveit.doc
- 《并行与分布式程序设计》课程教学参考书:CUDA C PROGRAMMING(CUDA编程指南4.0中文版).pdf
- 《并行与分布式程序设计》课程教学参考书:NVIDIA《CUDA C PROGRAMMING GUIDE》(Design Guide,CHANGES FROM VERSION 9.0).pdf
- 《并行与分布式程序设计》课程教学参考书:NVIDIA《CUDA C Programming》(Professional).pdf