C语言 8单元-指针 课件

2023-04-01
| 41页
| 215人阅读
| 49人下载
普通

内容正文:

8单元 指针 C语言程序设计任务驱动式 教程(第2版) 工业和信息化人才培养规划教材 国家精品资源共享课程配套教材 高职高专计算机系列 人 民 邮 电 出 版 社 前面曾经提出如果定义一个变量,就会在内存开辟空间存放变量的数据。在程序中引用变量名来使用这个内存空间,而编译时计算机则使用内存的地址来引用它。如果定义了一个整型变量int sum=0;,内存就开辟了一个整型变量的空间存放sum的值。 那么每一个变量都有一个对应的内存地址,还可以定义一个存放内存地址的变量,就是指针,存储在指针中的地址是另一个变量的首地址。可以定义指针变量p,存放变量sum的首地址,变量sum是一个值为0的整型变量。存储在p中的地址是sum的第一字节的地址。 指针是C语言中最强大的工具之一,是精华所在,也是最容易让人困惑的主题。只有在正确理解指针概念的基础上,才能熟练运用指针。 问题引入 Question Introduction 目录导航 任务1 交换两个变量的值—指针概述 任务2 3个数排序—指针变量作为函数参数 思考与训练 单元小结 任务3 字母放大镜—通过指针访问数组 任务1 交换两个变量的值—指针概述 通过编程解决两个变量数据交换的问题,这里使用指针变量指向两个整型变量,并完成交换。 工作任务 任务1 交换两个变量的值—指针概述 思路指导 定义变量:定义两个整型变量int a,b。 定义指针:定义两个指针变量int *p1, *p2。 输入:a、b的值。 交换:将两个指针指向两个整型变量,运用指针完成a与b值的交换。 相关知识 (一)指针变量的定义 格式:基类型 *指针变量名 例如: int *p1; (定义p1为指向整型变量的指针变量) char *p2; (定义p2为指向字符型变量的指针变量) float *p3; (定义p3为指向实型变量的指针变量) int、char、float分别称为指针变量p1、p2、p3的“基类型”,“基类型”意为指针变量所指变量的类型,不是指针变量的类型。 (二)指针变量赋值 1.通过取地址运算符(&)获得地址值 单目运算符(&)用来求出运算对象的地址,利用它可以把一个变量的地址赋给指针变量。 例如: int a=5, *p, *q; p=&a; scanf ("%d",&a);和scanf("%d",p);是等价的。 可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而使这两个指针变量指向同一地址。例如,若有上面的定义,则语句 q=p;使指针变量q中也存放了变量a的地址,也就是说,指针变量p和q都指向了整型变量a。 注意:赋值号两边指针变量的基类型必须相同。 2.通过指针变量获得地址值 (二)指针变量赋值 3.给指针变量赋“空”值 格式:p=NULL; NULL是在stdio.h头文件中定义的预定义符,因此在使用NULL时,应该在程序的前面出现预定义行:# include "stdio.h"。 (三)指针变量的引用 注意,&、*运算符是用在指针变量上的,而不是“位与”和“乘”运算符。&运算符(取地址运算符)表示取变量的地址;*运算符(指针运算符、间接访问运算符)表示访问指针变量指向的变量的值。 任务1 交换两个变量的值—指针概述 任务实施 1.流程图 程序流程图如图所示。 2.程序代码 # include "stdio.h" Main() { int a, b, *p1, *p2,p; printf("请输入a和b: "); scanf("%d,%d", &a, &b); p1=&a; p2=&b; if (a<b) //用指针交换a,b {p=*p1; *p1=*p2; * p2=p;} printf (" a=%d,b=%d ", a, b); printf ("指针1max=%d, 指针2min=%d ", *p1, *p2); } 程序运行结果如图8-2所示。 图8-2 任务1运行结果 任务1 交换两个变量的值—指针概述 特别提示 (1)C语言变量“先定义后使用”,指针变量也不例外,为了表示指针变量是存放地址的特殊变量,定义变量时要在变量名前加“*”号。 (2)指针变量的基类型(简称:指针变量类型)为指针变量所指向数据的类型。 我们知道,整型数据占用2字节,浮点数据占用4字节,字符数据占用1字节。指针变量类型使得指针变量的某些操作具有特殊的含义。比如,pt1++;不是将地址值增1,而是表示将地址值+2(指向后面一个整数)。 (3)指针变量的基类型实际上是指针变量所指向空间存储的数据的类型。 (4)本程序中定义语句中的*p1和*p2是定义两个指

资源预览图

C语言 8单元-指针 课件
1
C语言 8单元-指针 课件
2
C语言 8单元-指针 课件
3
C语言 8单元-指针 课件
4
C语言 8单元-指针 课件
5
C语言 8单元-指针 课件
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。