- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章指针.
第10章 指针
【计划课时】授课12课时+上机8课时
10.1 地址和指针的概念
1.地址
如果在程序中定义了一个“实体”(变量、数组、函数……),编译时系统就要给这些实体分配内存单元。分配规则:
存储类型 register
auto
atatic
extern 决定存储区域(动态存储区/静态存储区/寄存器组……) 数据类型 char
int
float
double等 决定占用的内存长度(字节数)和存储方式(ASCII码、补码等)
而内存单元是以字节为单位,每个字节都有一个编号(即“地址”)。如果将内存比作一个旅馆,内存单元就好比“床位”,而实体则好比“旅客”。这些“旅客”(实体)中,有单人型(char)、夫妇型(int)、家庭型(float,long,double等),还有团体型(数组等)。每个“实体”占用的内存单元是不同的。如:
char a;int b;float c;int d[3];int max( )
这些“实体”在内存中占用存储单元的情况可用下图表示(假定从内存单元地址1000开始):
a=1000 a 字符型变量a占1个字节 b=1001
1002 b 整型变量b占2个字节 c=1003
1004
1005
1006 c 单实型变量c占4个字节 d=1007
1008
1009
1010
1011
1012 d[0] 整型数组d占6个字节 d[1] d[2] max=1013 max( )
函数max( )入口地址
通常我们关心的不是具体的地址值,而是每个实体的“起始地址”。
实体地址表示法1:直接访问(实体名)
·普通变量a,b,c——a,b,c
·数组d[3]——d(数组名) d[0],d[1],d[2]
对二维数组,可用单下标法表示每行首地址。
如对char x[3][4],可用x[0]、x[1]、x[2]分别表示第一、二、三行的首地址。
·函数max( )——max(函数名) 入口地址
取地址运算符(适用于普通变量或数组元素)
实体地址表示法2:间接访问(指针)
适合于地址运算(加减等)
【说明】字符串是一种特殊的实体,存放在内存用户区的常量区(参见第四章第五节)。
2.指针(pointer)
实体地址的一种表示法(便于编程处理)。
指针是一种特殊的数据类型——存放的是某个实体的地址值。
【变量的“指针”】变量的地址
10.2变量的指针和指向变量的指针变量
10.2.1 指针变量 P202
存放“指针”(地址值)的特殊变量。
通常在C语言中,所谓“指针”就是指“指针变量”。
从现在开始,我们使用“指针”来表示“指针变量”。
为什么要用指针变量?
C程序中访问(读写)一个变量有两种方式:
直接访问:利用实体名访问变量。访问变量的过程如下:
变量(实体)名→定义时分配的地址→变量值
好比“先坐再买票”看电影,来一个观众,分配一个空位给他去坐,并且还要在纸上记一个某人坐在哪里。这种方式对用户来说很方便(“直接就座”),但对系统来说,“找某人”就极不方便(间接:查名字→座号)
间接访问:通过“指针”访问变量
好比先买票(票上座号——指针),再按号入座看电影。这种方式对用户来说属于“间接就座”,便对系统查找来说就很直接,且便于处理。尤其对于数组(团体),可通过指针简单自加或自减,对整个数组进行处理。
指针变量定义方法:
类型标识符 *变量名
如 int *a; char *b; float *c;
此处,指针变量a,b,c分别指向某个未确定的整型变量、字符变量和实型变量。但指针变量a,b,c本身是整数(地址)。(编程测试可以发现在PC机上指针变量取值范围为-32767~32767,超出该范围编译就会出错,以此推算PC机地址长度为16位即2个字节)。以下程序亦可证实这一点:
main()
{ char *a;
long int *b;
double *c;
printf(%d,%d,%d\n,sizeof(a),sizeof(b),sizeof(c));
}
结果:2,2,2
【注意】数组名是常量,不能自加、自减或重新赋值,指针变量则可以。
如 char a[10],*b,x=5;
a++; 或 a=100; a=x; ×(编译出错)
b++; 或 b=100; b=x; √(编译不出错)b=x实际上不行,见P256。
指针变量可以通过变量说明语句或赋值语句进行初始化。可以把指
您可能关注的文档
- 立足区情着眼长远全面推动三次产业和谐发展(专题调研)..doc
- 站场试题..doc
- 竞聘副校长面试题目..doc
- 竞赛10个专题辅导..doc
- 竞赛培训专题1-等差数列与等比数列..doc
- 竞赛试题分析化学..doc
- 竞赛试题机械分册..doc
- 竞赛试题选编之排列组合..doc
- 竞赛遗传练习题-王睿勇..doc
- 竞赛题目11..doc
- springbooot+vue基于java的房屋维修系统毕业论文.doc
- 中国消防救援学院《单片机系统实验》2023-2024学年第一学期期末试卷.doc
- 2025年溧阳纺织化学品项目申请.pptx
- 景区门票包销合同模板(3篇).docx
- 【股票技术指标学习指南】第七章第三节货币需要量的测算.doc
- 2025春 _ 人教版七年级英语下册【unit4】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit5】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit6】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit7】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit8】看音标写单词.doc
最近下载
- 《边坡与结构体雷达监测技术要求》.pdf VIP
- 一元一次方程应用题100道 .pdf VIP
- kebf5变频器伺服使用使用说明书f5m.doc
- 2025湖北恩施州利川市选调市外教师60人笔试参考题库附答案解析.docx VIP
- 2025湖北恩施州利川市选调市外教师60人笔试模拟试题及答案解析.docx VIP
- 服务标响应速度方案.docx VIP
- 2025湖北恩施州利川市选调市外教师60人笔试备考题库及答案解析.docx VIP
- 2025湖北恩施州利川市选调市外教师60人备考试题及答案解析.docx VIP
- 砌筑井抹灰工程方案(3篇).docx VIP
- 2019通信中级传输与接入(有线)宝典.pdf VIP
文档评论(0)