次课--指针变量的定义和运算、指针变量作函数参数.ppt_第1页
次课--指针变量的定义和运算、指针变量作函数参数.ppt_第2页
次课--指针变量的定义和运算、指针变量作函数参数.ppt_第3页
次课--指针变量的定义和运算、指针变量作函数参数.ppt_第4页
次课--指针变量的定义和运算、指针变量作函数参数.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 同学们,加油噢! 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 教学主题 指针变针变 量的定义义和运算、指针变针变 量作函 数参数 教学目标 通过过本次课课的学习习,使学生掌握指针针 的概念、指针变针变 量的概念和定义义方法、指 针变针变 量的运算、以及指针变针变 量作为为函数 参数的用法。 教学重点 1、指针变针变 量的定义义、赋值赋值 2、指针变针变 量的运算 3、指针变针变 量作为为函数参数的用法 教学难点 1、指针针和指针变针变 量的区别别 2、指针变针变 量作为为函数参数的实质实质 及效 果 教案 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 主要内容 指针和指针变量的概念 指针变量的定义和赋值 指针变量的运算 指针变量作为函数的参数 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 为为什么引入指针针 指针是C语言的特色、精华 程序设计时应用指针的好处 支持动态分配内存 能有效而方便地使用数组(包括字符串) 可以在函数调用时返回多个值 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 举举例 在程序中,有如下语句。问:内存中会如何变化? int x, y; x=12; y=20; 12 20 内存单元的编 号,叫地址 int *p; 表示p是一个指针变量, 它指向某个整型变量。 如何给这两个变量赋值? x=12; p呢? 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量的赋值赋值 指针变量同普通变量一样,使用之前不仅要定义,而且必 须赋予具体的值。 给指针变量赋值只能赋予地址,不能赋予任何其它数据。 语言中提供了地址运算符 int *p; x=12; 如何给p变量赋值? p= 如何在定义的同时给变量赋值? int x=12; int *p= 在用之前, x已定义 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 给给指针变针变 量赋值时赋值时 的注意点 可以让指针变量不指向任何变量。 int *p; p = NULL;(NULL在stdio.h中有定义) 通常不允许直接把一个数值赋给指针变量。 int *p; p = 1000; 被赋值的指针变量前不能再加“*”说明符。 int a,*p; *p = 一个指针变量只能指向同类型的变量。 float b; int *p; p = 错误的用法 错误的用法 错误的用法 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量的特殊性 指针变量也是一种变量。 指针变量只不过是一种特殊的变量,其特殊性 表现在类型和值上。 指针变量的类型是指针所指向的变量的类型。 指针变量的值是某个变量在内存中的地址。 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量使用技巧 指针变量的使用原则: 先赋初值(地址),再使用。 理由: 安全使用指针变量的方法: 对暂时不使用的指针,可先定义成空指针。即将 其赋值为NULL。 使用未经赋值的 (浮游)指针 危害很大。 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 与指针变针变 量有关的运算符 与指针变量有关的运算符有两个: int *p; a = 123; p = b = *p; *p = -200; printf (“a=%d, b=%dn“, a, b ); p = printf (“%d, %dn“, b, *p ); 程序运行结果 a=-200, b=123 123, 123 运行程序 (3_1) 思考p的指向;第2个printf中的访问方式 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量的运算 除了 pb = pa; 把数组的首地址赋予同类型的指针变量。 int a5, *pa; pa = a; 或 pa = 把字符串的首地址赋予指向字符类型的指针变量。 char *pc; pc = “I am a student!“; 也可用初始化赋值的方法写为: char *pc = “ I am a student!“; 不表示把整个字符串 装入指针变量,只是 把字符串的首地址装 入指针变量。 回顾字符数组的赋值! 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 对于指向数组的指针变量,可以加上(或减去) 一个整数n。 设pa是指向数组a的指针变量, 则pa+n、pa-n、pa+、+pa、 pa-、-pa运算都是合法的。 举例 int a10, *pa; pa = a; pa = pa + 2; 指针变针变 量的加减运算1 pa ? 运行程序 (3_2) 看源程序 (3_2) 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量的加减运算2 指向同一数组的两个指针变量,可以进行减法运算。 ( 两指针变量相减) 如果两指针变量指向同一个数组,则相减 的结果是两个指针之间相差的元素个数。 例如 在右图中, p1指向a1,p2指向a5, 则p2-p1=? 注意:p1+p2无任何实际意义。 p1 p24 运行程序 (3_3) 看源程序 (3_3) 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 两指针变针变 量相减的应应用 【例6-2】求字符串的长度,要求不用strlen库函数。 源程序 #include “stdio.h“ void main() char *s = “CProgram!“; char *p = s; int len; while ( *p != 0 ) p+; len = p - s; printf(“该字符串的长度为%d。n“, len ); 程序运行结果该字符串的长度为9。 运行程序 (3_4) 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量的关系运算 指向同一数组的两指针变量可以进行关系运算,表 示它们所指数组元素的地址之间的大小关系。 例如:右图中,表达式“p2p1”的值为? 任何类型的指针变量还可以与 NULL进行比较。 例如:设p为指针变量, “p=NULL”为真时表示p是空指针, 它不指向任何变量; “p!=NULL”为真时表示p不是空指针。 p1 p2 真 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量关系运算的应应用 【例】利用指针变量实现输出数组元素。 源程序 #include “stdio.h“ void main() int a5=1,2,3,4,5; int *p, *end; p=a; end=a+5; while ( p end ) printf( “%d ”, *p ); p+; 运行程序 (3_5) 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 回顾顾 思考两个问题 上学期学过哪些变量? 作为函数参数时,采用什么方式传递数据? 看源程序 (3_6) 举例 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 函数参数传递规则总结传递规则总结 C语言的函数参数传递规则 单向值传递 就“值”而言,有两种: 传递数值修改形参,不会影响到实参 传递地址通过形参可以访问实参 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量作为为函数的参数 指针变量作函数参数 传递的值:地址 特点:可以改变实参指针变量所指向的变量的值。 好处:可以返回多个值 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量作函数参数举举例1 【例6-3】编写程序,完成一个学生两门课程成绩的输入和输出。要求用两 个函数input和output分别实现成绩的输入和输出。 分析 假定两门课程成绩存放在变量math和english中,在main函数中定义如 下: int math, english; 这两门课程成绩的输入要求在函数input中完成,而输出又要在函数 output中进行,所以,调用完input函数后必须将两门课程成绩返回到主函 数,再以参数的形式传递给output函数。 因此,input函数必须以指针变量作为函数参数,以便能修改主函数中变 量math和english的值。 思考:output函数的参数定义成什么形式? 运行程序 (3_7) 看源程序 (3_7) 源程序 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量作函数参数举举例2 【例6-4】编写程序,输入a和b两个整数,处理后使a中存放两 者较小的那一个,b中存放两者较大的那一个,最后按a、b的 顺序输出。要求:用函数实现两个数的交换。 分析 当输入数据后,a的值比b大,则需要交换它们的值。 流程图 源程序 运行程序 (3_8) 看源程序 (3_8) 思考:正确吗?为什么? 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量作函数参数举举例2 【例6-4】编写程序,输入a和b两个整数,处理后使a中存放两 者较小的那一个,b中存放两者较大的那一个,最后按a、b的 顺序输出。要求:用函数实现两个数的交换。 再分析 用函数swap实现交换两个整数的值,两个整数以参数的形式 由main函数传递给swap函数。因为交换完以后还要把值返回 给main函数,所以,以指针变量作为swap函数的参数。 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 指针变针变 量作函数参数举举例2 【例6-4】编写程序,输入a和b两个整数,处理后使a中存放两 者较小的那一个,b中存放两者较大的那一个,最后按a、b的 顺序输出。要求:用函数实现两个数的交换。 流程图 源程序 运行程序 (3_9) 看源程序 (3_9) 第6章 第3次课-指针变量的定义和运算、指针变量作函数参数 C语言与数据结构 swap函数总结总结 void swap( int *p1, int *p2 ) int temp; temp = *p1; *p1 = *p2; *p2 = temp; void swap( int *p1, int *p2 ) int *temp; temp = p1; p1 = p2; p2 = temp; void swap( i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论