《(中职)C语言程序设计案例教程第6章指针(1-2节)教学课件().ppt》由会员分享,可在线阅读,更多相关《(中职)C语言程序设计案例教程第6章指针(1-2节)教学课件().ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、(中职)C语言程序设计案例教程第6章指针(1-2节)教学课件(工信版)CONTENTS目录016.1 指针变量的概念和指指针变量的概念和指针变量的定义针变量的定义 026.2 指针变量的引用指针变量的引用本节要点:理解指针变量的概念。掌握指针变量的定义。掌握指针变量的引用。PART6.1指针变量的概念和指针变量的定义 5指针概述:C语言中的重要概念之一是指针,指针也是C语言的一个重要特色之一。复杂的数据结构可以通过指针灵活、有效地表示。还能动态使用内存,方便地使用字符串,有效而方便地使用数组。在调用函数时,以指针为返回值,能得到多于1个的值。使用指针能直接处理内存地址等,这对设计系统软件是很必
2、要的。掌据指针的应用,可以使程序简洁、紧凑、高效。AB一个变量的地址称为该变量的“指针”。内存用户数据区20003变量i20026变量j20049变量k30102000变量i_pointer图6-1内存数据区示意图6.1.1 指针变量的概念6.1.2 指针变量的定义 图6-2直接访问变量和间接访问变量示意图i200032000ii_pointer32000如果想把3这个值存放入变量i中,可以如左图直接赋值,a=3;称为直接访问,也可以通过i的地址存放的指针变量i_pointer,把3这个数字存放入变量i中。6.1.2 指针变量的定义 定义指针变量的格式:数据类型符*指针变量名1,*指针变量名2
3、,*指针变量名n;例如:int*pointer_1,*pointer_2;float*pointer_3;char*pointer_4;9指针与变量:AB(1)取地址运算符“&”通过对变量进行取地址运算,获得变量的存储地址。取地址运算符“&”的格式:&变量名例如:&i 取变量i的地址。例如:&i取变量i的地址。例:6-1:取地址运算符“&”应用实例,运行程序显示变量i的存储地址和i的值。#includevoidmain()inti=3;printf(变量i的地址是:%d,i的值是:%dn,&i,i);11指针与变量:AB(2)给指针变量赋值在程序中可以通过赋值语句给指针变量赋值。给指针变量赋值
4、格式:指针变量=变量地址;例如:inti,*pi;/*定义整型变量i及指向整型数据的指针变量pi*/pi=&i;/*使指针变量pi指向i的存储单元*/例:6-2:给指针变量赋值应用实例,运行程序将指针变量pi 指向变量i,并输出i的值。#includevoidmain()inti=3,*pi;pi=&i;printf(变量i=%d,*pi=%dn,i,*pi);说明:在程序中“*指针变量名”表示取得指针所指向的变量的值。13指针与变量:AB(3)在声明语句中,定义变量后,就可以直接取得变量地址赋给指针变量,让指针变量指向变量。格式:数据类型符变量名,指针变量=&变量名;例如:inta=7,b=
5、5,c,*pa=&a,*pb=&b;例:6-3:给指针变量赋值应用实例,变量地址赋给指针变量。#includevoidmain()inta=7,b=5,c,*pa=&a,*pb=&b;c=*pa+*pb;/*取出a,b的值,相加后将结果赋给变量c,等价于c=a+b*/printf(变量a=%d,指针*pa=%dn,a,*pa);printf(变量b=%d,指针*pb=%dn,b,*pb);printf(%d+%d=%dn,a,b,c);printf(%d+%d=%dn,*pa,*pb,c);15指针与变量:A(4)空指针的概念一个不指向任何存储单元的指针称之为空指针,空指针的值为ASCII码表
6、中的NULL值,也是0值。PART6.2指针变量的引用17指针与变量:定义指针变量的例子:例如:int a,*pa;定义整型变量a,又定义一个指向整型数据的指针变量pa。pa=&a;使指针变量pa指向a的存储单元。float x,y,*pf=&x;定义浮点型变量x、y及一个指向浮点型数据的指针变量pf,使指针变量pf指向x的存储单元。指针变量中只能用于存储变量的地址,不可将一个整型常量赋给一个指针变量。例如:pi=1000;是非法的。标题&为取地址运算符,*是间接访问运算符。例如:&a可以取得变量的地址,*pa是指针pa所指向变量存储单元的值。标题18指针变量:(1)类型说明符说明的是指针变量
7、所指向的数据类型。不能由不同类型的指针变量替代。(2)指针变量名也是由标识符来充当的。(3)指针变量的初始化要遵循“先说明、后使用”的原则。(4)如果已执行了pa=&a;语句,若有&*pa,所表达的含义是变量a的地址,因“&”“*”有相同的运算优先级,按自右向左的方向接合,*pa就是pa所指向的变量a,&*pa与&a的作用相同,就是取得了变量a的地址。同样的*&a的结合方法与&*pa相同,也按从右向左的顺序结合,*&a与变量a的作用相同。(5)*pa+在执行时,因“*”和“+”为同一优先级别,结合方向为自右而左的,相当于*(pa+),因pa+为后置运算,所以该运算先取*pa所指向的变量a,再让
8、pa+指向下一个存储单元,而不再指向变量a。如果要通过指针使变量a自增,则需要将它表示为(*pa)+,增加括号,不让产生歧义。添加标题单击此处添加文本添加标题添加标题添加标题添加标题单击此处添加文本添加标题添加标题添加标题添加标题单击此处添加文本添加标题添加标题添加标题例:6-4:指针变量的引用实例,使用指针编写程序,输入a和b两个整数,按先大后小的顺序输出a和b。#includevoidmain()int*pa,*pb,*p,a,b;printf(请输入两个整数);scanf(%d%d,&a,&b);pa=&a;pb=&b;if(ab)p=pa;pa=pb;pb=p;printf(a=%d,b=%dn,a,b);printf(从大到小输出两个整数:%d,%dn,*pa,*pb);20指针变量:1210010&bppa&apbab10010&appa&bpbab图6-3-(a)两个指针变量交换之前图6-3-(b)两个指针变量交换之后通过本节学习重点理解和掌握的知识有:(1)理解变量与指针的区别。(2)重点掌握指针变量的相关概念。(3)重点掌握指针变量的定义,指针指向变量。(4)掌握用指针变量引用的变量方法。本节小结