指针是C语言中的一个重要的概念

指针是C语言中的一个重要的概念

ID:41526740

大小:209.56 KB

页数:20页

时间:2019-08-26

指针是C语言中的一个重要的概念_第1页
指针是C语言中的一个重要的概念_第2页
指针是C语言中的一个重要的概念_第3页
指针是C语言中的一个重要的概念_第4页
指针是C语言中的一个重要的概念_第5页
资源描述:

《指针是C语言中的一个重要的概念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章指针指针是C语言中的一个重要的概念,也是c语言的一个重要特色。正确而灵活地运用它,可以有效地表示复杂的数据结构;能方便地使用字符串;有效而方便地使用数组;在调用函数时能得到多个的值;能直接处理内存地址等,这对设计系统软件是很必要的。掌握指针的应用,可以使程序简洁、紧凑、高效。每一个学习和使用C语言的人,都应当深入地学习和掌握指针。可以说,不掌握指针就不掌握C语言的精华。重点:1、指针的概念;2、指针变量的概念;3、指针变量的定义及引用;4、指针变量作为函数的参数;难点:指针变量作为函数的参数10.1指针的概念一、内存

2、的访问方式1、直接访问(通过变量名对内存单元进行存取操作。)200020022004ijk369:内存用户数据区::如:i=2,j=6,k=9printf(“%d”,i);该输出语句是这样执行的:根据变量名与地址的对应关系(该关系在编译时确定),找到变量的地址2000,然后将从2000开始的两个字节的内容(即3)取出后输出。10.1指针的概念2000200220043010ijki_p3692000:内存用户数据区::2、间接访问将变量i的地址存放在另一个变量中。假设变量i_p用来存放整型变量的地址,它被分配3010、30

3、11两个字节,可用下例语句将i的地址存放到i_p中。i_p=&i;即i-p中的的值为2000此时,要存取变量的值,可以先找到存放“i”地址的变量i_p,从中取出i的地址(2000),然后到2000,2001字节取出i的值3。两个概念:(1)指针──即地址一个变量的地址称为该变量的指针。通过变量的指针能够找到该变量。(2)指针变量──专门用于存储其它变量地址的变量指针变量i_p的值就是变量i的地址。10.1指针的概念变量的指针就是变量的地址,存放变量地址的变量就是指针变量。为表示指针变量和它指向的变量之间的关系,用指针运算符

4、“*”表示。即:*(i_p)就是i_p所指向的变量。10.2变量的指针和指向变量的指针变量20003i_p*(i_p)i因此,下面两个语句的作用相同:①i=3;/*将3直接赋给变量i*/②i_p=&i;/*使i_p指向i*/*i_p=3;/*将3赋给指针变量i_p所指向的变量*/10.2变量的指针和指向变量的指针变量1、指针变量的定义一般形式:类型标识符*变量名如:int*p1;char*p2;float*p3;说明:*表示该变量为指针型变量,指针变量名为p1,p2,p3定义指针变量时必须指定基类型。它表示指针变量中存放的

5、地址所指向的是什么类型的数据。给指针变量赋值:如:p1=&i(将i的地址赋给p1)注:一般不直接赋数值2、指针变量的引用用指针变量对变量赋值:如:inti,j,*p;p=&i;*p=3;j=*p+2;注意:p是地址变量,而*p是非地址变量,与i是一回事。“*”:为指针运算符或叫指向运算符、间接运算符。定义后p=&I后*p=3后Ijp::::100010021004Ijp100010021004Ijp100010021004Ijp100031000100010021004j=*p+2后351000例10.1通过指针变量访问整

6、型变量main(){inta,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;/*把变量a的地址赋给pointer_1*/pointer_2=&b;/*把变量b的地址赋给pointer_2*/printf(”%d,%d”,a,b);printf(”%d,%d”,*pointer_1,*pointer_2);}*pointer_1=&a对吗?运行结果为:100,10100,10关于运算符&和*的几点说明:(1)结合性&和*两运算符的优先级相同,但结合方向为自右向左

7、如:inta,b,*p1,*p2;p1=&a;p2=&b;&*p1的含义?&*p1相当于&(*p1),等于&(*p1)=&(a)=&a=p1*&a的含义?*&a相当于*(&a)=*(p1)=a(2)优先级处于第二位(见附录)(3)自增自减运算如:inta,b,*p;p=&a;a=3;b=5;(*p)++:相当于a++,a=4*p++:相当于*(p++),先求*P的值(为3),然后P再++,若p原为1000,则p++为1002,即P不再指向a了。若floata,*p;p=&a;当p为1000,则p++为1004例10.2输入

8、a和b两个整数,按先大后小的顺序输出a和b。main(){int*p1,*p2,*p,a,b;scanf("%d,%d“,&a,&b);p1=&al;p2=&b;if(a

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

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

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