版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(中职)C语言程序设计案例教程第6章指针(1-2节)教学课件(工信版)CONTENTS目录016.1指针变量的概念和指针变量的定义026.2指针变量的引用本节要点:理解指针变量的概念。掌握指针变量的定义。掌握指针变量的引用。PART6.1
指针变量的概念和指针变量的定义
指针概述:C语言中的重要概念之一是指针,指针也是C语言的一个重要特色之一。复杂的数据结构可以通过指针灵活、有效地表示。还能动态使用内存,方便地使用字符串,有效而方便地使用数组。在调用函数时,以指针为返回值,能得到多于1个的值。使用指针能直接处理内存地址等,这对设计系统软件是很必要的。掌据指针的应用,可以使程序简洁、紧凑、高效。AB一个变量的地址称为该变量的“指针”。
内存用户数据区
…
20003变量i20026变量j20049变量k
…
30102000变量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,…,*指针变量名n;例如:int*pointer_1,*pointer_2;float*pointer_3;char*pointer_4;指针与变量:AB(1)取地址运算符“&”
通过对变量进行取地址运算,获得变量的存储地址。取地址运算符“&”的格式:&变量名例如:&i取变量i的地址。例如:&i取变量i的地址。
例:6-1:取地址运算符“&”应用实例,运行程序显示变量i的存储地址和i的值。#include<stdio.h>voidmain(){inti=3;printf("变量i的地址是:%d,i的值是:%d\n",&i,i);}指针与变量:AB(2)给指针变量赋值在程序中可以通过赋值语句给指针变量赋值。给指针变量赋值格式:指针变量=变量地址;例如:inti,*pi;/*定义整型变量i及指向整型数据的指针变量pi*/pi=&i;/*使指针变量pi指向i的存储单元*/
例:6-2:给指针变量赋值应用实例,运行程序将指针变量pi指向变量i,并输出i的值。#include<stdio.h>voidmain(){inti=3,*pi;pi=&i;printf("变量i=%d,*pi=%d\n",i,*pi);}说明:在程序中“*指针变量名”表示取得指针所指向的变量的值。指针与变量:AB(3)在声明语句中,定义变量后,就可以直接取得变量地址赋给指针变量,让指针变量指向变量。格式:数据类型符变量名,指针变量=&变量名;例如:inta=7,b=5,c,*pa=&a,*pb=&b;
例:6-3:给指针变量赋值应用实例,变量地址赋给指针变量。#include<stdio.h>voidmain(){inta=7,b=5,c,*pa=&a,*pb=&b;c=*pa+*pb;/*取出a,b的值,相加后将结果赋给变量c,等价于c=a+b*/printf("变量a=%d,指针*pa=%d\n",a,*pa);printf("变量b=%d,指针*pb=%d\n",b,*pb);printf("%d+%d=%d\n",a,b,c);printf("%d+%d=%d\n",*pa,*pb,c);}指针与变量:A(4)空指针的概念一个不指向任何存储单元的指针称之为空指针,空指针的值为ASCII码表中的NULL值,也是0值。PART6.2指针变量的引用指针与变量:定义指针变量的例子:例如:inta,*pa;定义整型变量a,又定义一个指向整型数据的指针变量pa。pa=&a;使指针变量pa指向a的存储单元。floatx,y,*pf=&x;定义浮点型变量x、y及一个指向浮点型数据的指针变量pf,使指针变量pf指向x的存储单元。指针变量中只能用于存储变量的地址,不可将一个整型常量赋给一个指针变量。例如:pi=1000;是非法的。标题&为取地址运算符,*是间接访问运算符。例如:&a可以取得变量的地址,*pa是指针pa所指向变量存储单元的值。标题指针变量:(1)类型说明符说明的是指针变量所指向的数据类型。不能由不同类型的指针变量替代。(2)指针变量名也是由标识符来充当的。(3)指针变量的初始化要遵循“先说明、后使用”的原则。(4)如果已执行了pa=&a;语句,若有&*pa,所表达的含义是变量a的地址,因“&”“*”有相同的运算优先级,按自右向左的方向接合,*pa就是pa所指向的变量a,&*pa与&a的作用相同,就是取得了变量a的地址。同样的*&a的结合方法与&*pa相同,也按从右向左的顺序结合,*&a与变量a的作用相同。(5)*pa++在执行时,因“*”和“++”为同一优先级别,结合方向为自右而左的,相当于*(pa++),因pa++为后置运算,所以该运算先取*pa所指向的变量a,再让pa++指向下一个存储单元,而不再指向变量a。如果要通过指针使变量a自增,则需要将它表示为(*pa)++,增加括号,不让产生歧义。添加标题单击此处添加文本添加标题添加标题添加标题添加标题单击此处添加文本添加标题添加标题添加标题添加标题单击此处添加文本添加标题添加标题添加标题
例:6-4:指针变量的引用实例,使用指针编写程序,输入a和b两个整数,按先大后小的顺序输出a和b。#include<stdio.h>voidmain(){int*pa,*pb,*p,a,b;printf("请输入两个整数");scanf("%d%d",&a,&b);pa=&a;pb=&b;if(a<b){p=pa;pa=pb;pb=p;}printf("a=%d,b=%d\n",a,b);printf("从大到小输出两个整数:%d,%d\n",*pa,*pb);}指针变量:1210010&bppa&apbab10010&appa&bpba
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025买卖合同范本(宅基地)
- 科技赋能下的宠物托儿所财务风险识别与防范
- 课题申报参考:量子信息产业劳动力教育需求调查与教育资源开发
- 课题申报参考:劳动力流动、代际居住分离与农村养老服务整合研究
- 知识经济时代的终身学习与发展
- 2025年华师大新版七年级生物下册月考试卷含答案
- 2025年湘教新版九年级历史下册阶段测试试卷含答案
- 2025年浙教版必修1历史下册月考试卷
- 2025年人教A新版七年级科学下册阶段测试试卷含答案
- 2025年苏教新版九年级历史下册月考试卷
- 【语文】第23课《“蛟龙”探海》课件 2024-2025学年统编版语文七年级下册
- 加强教师队伍建设教师领域学习二十届三中全会精神专题课
- 2024-2025学年人教版数学七年级上册期末复习卷(含答案)
- 2024年决战行测5000题言语理解与表达(培优b卷)
- 四年级数学上册人教版24秋《小学学霸单元期末标准卷》考前专项冲刺训练
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- (完整版)减数分裂课件
- 银行办公大楼物业服务投标方案投标文件(技术方案)
- 第01讲 直线的方程(九大题型)(练习)
- 微粒贷逾期还款协议书范本
- 人教版七年级上册数学全册课时练习带答案
评论
0/150
提交评论