C语言指针第讲ppt课件.ppt

C语言指针第讲ppt课件.ppt

ID:59421805

大小:554.50 KB

页数:49页

时间:2020-09-19

C语言指针第讲ppt课件.ppt_第1页
C语言指针第讲ppt课件.ppt_第2页
C语言指针第讲ppt课件.ppt_第3页
C语言指针第讲ppt课件.ppt_第4页
C语言指针第讲ppt课件.ppt_第5页
资源描述:

《C语言指针第讲ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、内容提要指针概述指针的概念为什么引入指针的概念指针变量作为函数参数字符指针作为函数参数指针和数组间的关系一维数组的地址和指针二维数组的地址和指针为什么引入指针的概念铁杆C/C++程序员最挚爱的武器:指针C/C++的高效、高能主要来自于指针很多不可能的任务由指针完成为什么引入指针的概念指针为函数提供修改变量值的手段为C的动态内存分配系统提供支持为动态数据结构(如例链表、队列、二叉树等)提供支持可以改善某些子程序的效率内存的寻址方式如何读写内存中的数据?通过变量的地址访问变量所在的存储单元两种寻址方式直接(寻址)访问通过变量地

2、址直接存取变量内容间接(寻址)访问通过指针变量来间接存取它所指向的变量i_pointer=&i;指针(Pointer)的概念指针也是一种数据类型指针变量声明为指针类型的变量,专门存放地址数据的变量如何定义指针变量?定义指针变量int*p;定义了一个指针变量p,简称指针pp是变量,int*是类型指针变量初始化int*p,a;p=&a;*p与a完全等价inti,*p;p=&i;int*p;float*q;p=q;inti;float*p;p=&i;int*p;p=100;判断是真?是假?指针变量只存放地址!一个指针变量不能指向

3、与其类型不同的变量!我是真的,你猜对了吗?应在类型相同的指针变量之间赋值&与*操作符&用来取变量的地址*用来取指针指向的内存中的内容int*p,a[10]; p=&a[0];*p=20;int*p,a[10]; p=&a[5];*p=20;inti=3,*p; p=&i;printf(“*p=%d”,*p);int*p,a[10]; p=a;*p=20;等价于a[0]=20;指针变量与其它类型变量的对比共性在内存中占据一定大小的存储单元先定义,后使用特殊性它的内容只能是地址,而不能是数据必须初始化后才能使用,否则指向不确定

4、的存储单元,对该空间进行访问,将可能造成危险可参与的运算:加、减一个整数,自增、自减、关系、赋值只能指向同一基类型的变量指针的指向只能指向同一基类型的变量,否则将引起warningfloatx;int*p=&x;TC编译warning:SuspiciouspointerconversioninfunctionmainVC编译warningC4133:'=':incompatibletypes-from'float*'to'int*'指针运算算术运算short*p,a[10];p=a;p++;/*p的值增加多少?*/指针的加

5、减运算是以其指向的类型的字节长度为单位的6000600160026003600460056006p-1pp+1指针运算int*p,*q,a[10]; p=a; q=&a[5];q-pq=p+5;指针运算不能乱算一般只进行指针和整数的加减运算,同类型指针之间的减法运算其它运算,比如乘法、除法、浮点运算、指针之间的加法等,并无意义,所以也不支持指针运算关系运算指向同一种数据类型的两个指针才能进行关系运算值为1或0p>qp

6、==NULLp!=NULL指针运算赋值运算指针在使用前一定要赋值为指针变量赋的值必须是一个地址main(){int*p;scanf("%d",p);…}main(){inta,*p=&a;scanf("%d",p);…}错!但TC下不报错VC下报错指针与函数指针既然是数据类型,自然可以做函数参数和返回值的类型指针做函数参数的经典例子:两数的互换voidSwap(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}main(){inta,b;a=15;b=8;Swap(&a,&b);pri

7、ntf("a=%d,b=%d",a,b);}voidSwap(intx,inty){inttemp;temp=x;x=y;y=temp;}main(){inta,b;a=15;b=8;Swap(a,b);printf("a=%d,b=%d",a,b);}程序1程序2例7.1~7.2:编写函数实现两数的互换主调函数被调函数实参形参结果有何不同?NotWork!Why?主调函数被调函数main(){inta,b;a=15;b=8;Swap(a,b);printf("a=%d,b=%d",a,b);}voidSwap(intx,

8、inty){inttemp;temp=x;x=y;y=temp;}55ab实参形参99xyab程序1xy55temp9主调函数被调函数main(){inta,b;a=15;b=8;Swap(&a,&b);printf("a=%d,b=%d",a,b);}voidSwap(int*x,int*y){int

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

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

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