当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

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

资源类别:文库,文档格式:PDF,文档页数:41,文件大小:433.9KB,团购合买
维数组 多维数组 常量数组 扑克选牌示例 变长数组
点击下载完整版文档(PDF)

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) 或索引 (index￾ing) 操作 对于内含 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

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共41页,可试读14页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有