- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言高级编程第五课
高质量C语言编程
3 Sept. 2008
© Neusoft Confidential
第五章:数组
目标:
1)明确数组的五大特点
2 )掌握创建和初始化数组的方法 时间:5学时
3 )了解数组和指针间的关系
教学方法:PPT+练习
4 )独立完成数组相关练习
5.1 使用数组的意义
为何要使用数组?
如果没有数组,想想编程大路上的坎途吧。
计算一个班级的平均身高。( 比如有50人)
命名问题
求和问题(漏加、繁琐……)
5.2 什么是数组
数组是内存中连续存储的有相同类型的数据的有序
集合,是一种构造类型。
定义方式: 数组元素的类型
类型 数组名[元素个数];
1 2 3
这里元素个数可以是整型常量或整型常量表达式
可以是变量吗? 不可以
5.2 什么是数组
int a[10]; //此时[]是数组定义符。
a[1] = 1; //此时[]下标运算符。
另,不要认为a[i]代表数组元素的值,它代表数组
元素本身,可作为左值使用。
数组定义时,方括号中常量表示数组元素的个数。
C语言中访问数组时规定数组的下标从0开始。
5.3 数组的初始化
完全初始化:
int a[10] = {0,1,2,3,5,6,7,8,9};
部分初始化:
int b[10] = {8,1};
默认初始化:
int c[] = {1,2,3,4};//系统根据初值个数确定数组长度
char a1[10]= {a,b,c,d};
char a2[3] = {a,b,c,d}; // 出错!
char a3[ ] = {a,b,c,d};
char a4[ ] = abcd;
5.4 数组的特点
存储空间连续;
元素之间有序;
元素类型相同;
元素个数固定;(除了在堆上分配)
数组元素无名;
例:int a[10];
1、a代表了数组的首地址,它具有特定的类型!
那么sizeof(a)应该是? int [10]
2、数组名代表数组首地址,一定是个常量。
那么a++?
5.5 访问数组元素
对变量的访问方式有几种?
直接访问—— 用变量名访问。
间接访问—— 用地址、指针访问。
int i=10; int*p = i ;*p=2;
int a [10]={0} ;
a[2] = 32; //属于哪种访问方式?
注意:间接访问,使用地址访问!
首地址+ 偏移 偏移 下标值* sizeof(数组元素类型)
* (首地址+ 偏移)间址运算符*,用地址访问元素
5.5 访问数组元素
*(首址+ 偏移)是对数组元素进行访问的本质,但不
是唯一的书写方式。
奇怪的写法:
int a[10] = {1,2,3,4,};
2[a] = 10;
char ch = 5[ Neusoft ];
记住:a[ i ] *(a + i* sizeof(数组元素类型) )
5.5 访问数组元素
C语言规定数组不能以整体形式参与数据处理,只能
逐个使用数组元素。
int a[3] = {1,2,3};
int b[3] ;
b = a;
只读访问数组:
例如:const int month[12] = {31,28,31};
这是只读数组,在程序运行时不能修改数据。
5.5 访问数组元素
下面程序将打印什么结果?
#include stdio.h
#define TRUE 1
int main(void)
{
int ref[]={8,4,0,2};
int *ptr;
int index;
for(in
文档评论(0)