c语言程序设计—第十章指针

c语言程序设计—第十章指针

ID:36875652

大小:427.00 KB

页数:33页

时间:2019-05-10

c语言程序设计—第十章指针_第1页
c语言程序设计—第十章指针_第2页
c语言程序设计—第十章指针_第3页
c语言程序设计—第十章指针_第4页
c语言程序设计—第十章指针_第5页
资源描述:

《c语言程序设计—第十章指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、重庆邮电大学计算机科学与技术学院冯潇fengxiao@cqupt.edu.cn指针及其应用主要内容指针的概念;难点:对指针数据类型的理解用指针做函数参数;指针与一维数组数组名作为函数参数一维数组与一维数组元素指针的区别插入和删除数组元素2021/7/14重点、难点对于指针概念的理解对于地址、直接寻址、间接寻址的理解对于指针作为函数参数的理解对于指针和数组关系的理解利用指针解决字符串问题2021/7/14变量再探什么是变量?程序运行过程中其值会发生改变的量变量有3个特点;变量要占用一定的存储空间变量有名字程序运行过程中变量的值可能发生改变变量的实质在高级语言中,变量是对存储单元和内存地址的映射通

2、过使用变量名定位存储单元的寻址方式叫直接寻址2021/7/14计算机内的存储部件,所有指令和数据都保存在内存里速度快,但是掉电即失可以随机访问内存中的每个字节都有唯一的一个地址地址按字节编号,按类型分配空间只要指明要访问的内存单元的地址,就可以立即访问到该单元地址是一个无符号整数,其字长一般与主机相同内存(RandomAccessMemory) 地址(Address)2021/7/14寻址方式直接(寻址)访问通过变量地址直接存取变量内容间接(寻址)访问通过指针变量来间接存取它所指向的变量2021/7/14什么是指针专门存放地址数据的变量即为指针变量指针也是一种数据类型,也有与之相应的运算法则指

3、针是不是地址?地址是一个无符号整数,其字长一般与主机相同指针是一个变量,完全符合变量的3个特点定义指针类型*指针变量名;“*”为指针类型说明符2021/7/14&完成指针的初始化指针变量名=&变量名;*完成指针的间接访问*指针变量名等价于指针指向的变量*指针变量名代表指针所指变量,使用方法和普通变量一样指针在定义之后必须进行初始化,否则会出现指针悬空&与*操作符2021/7/14示例&和*voidmain(){inta=10,*p;p=&a;*p+=10;printf(“a=%d”,a);printf(“p=%d”,p);printf(“*p=%d”,*P);}202010ap30002020

4、202021/7/14inti,*p;p=&i;int*p;float*q;p=q;inti;float*p;p=&i;int*p;p=100;判断是真?是假?指针变量只存放地址!一个指针变量不能指向与其类型不同的变量!我是真的,你猜对了吗?应在类型相同的指针变量之间赋值2021/7/14指针运算算术运算int*p,a[10];p=a;p++;/*p的值增加多少?*/指针的加减运算是以其指向的类型的字节长度为单位的6000600160026003600460056006p-1pp+12021/7/14指针运算int*p,*q,a[10]; p=a; q=&a[5];q-pq=p+3;指针运算不

5、能乱算一般只进行指针和整数的加减运算,同类型指针之间的减法运算其它运算,比如乘法、除法、浮点运算、指针之间的加法等,并无意义,所以也不支持2021/7/14指针变量与其它类型变量的对比共性在内存中占据一定大小的存储单元先定义,后使用特殊性它的内容只能是地址,而不能是数据,TC下2B,VC下4B必须初始化后才能使用,否则指向不确定的存储单元,对该空间进行访问,将可能造成危险可参与的运算:加、减一个整数,自增、自减、关系、赋值只能指向同一基类型的变量2021/7/14为什么要引入指针?铁杆C/C++程序员最挚爱的武器:指针C/C++的高效、高能主要来自于指针很多不可能的任务由指针完成指针的作用:为

6、函数提供修改变量值的手段为C的动态内存分配系统提供支持为动态数据结构(如例链表、队列、二叉树等)提供支持可以改善某些子程序的效率2021/7/14交换两个数的值voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}voidmain(){inta,b;a=5;b=10;swap(a,b);printf("a=%d,b=%d",a,b);}2021/7/14回顾mainab510swaptempx5y10x10y55tempvoidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}voidmain(){inta,b;a=5

7、;b=10;swap(a,b);printf("a=%d,b=%d",a,b);}2021/7/14105ba用指针作为函数参数yx5102021/7/14改进:voidswap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}voidmain(){inta,b;a=15;b=8;swap(&a,&b);printf("a=%d,b=%d",a,b);}20

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。