C语言程序设计教案 第十章指针

合集下载

C语言程序设计_谭浩强_第二版_CH10

C语言程序设计_谭浩强_第二版_CH10

}
第十章 指针 10.3 数组的指针和指向数组的指针变量 10.3.2 通过指针引用数组元素 例10.5输出数组中的全部元素。 ②通过数组名计算数组中元素的地址,找出元素的值。
main() {
int a[10],i; for(i=0;i<10;i++){scanf(“%d”,&a[i]);} print(“\n”); for(i=0;i<10;i++){printf(“%d”,*(a+i));} print(“\n”);
}
运行结果为: 100,10 100,10
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.1 通过指针变量访问整型变量
pointer_1 &a
a 100 *pointer_1
pointer_2 &b
b 10 *pointer_2
第十章 指针 10.2 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 5 *pointer_1
pointer_2 &b
b 9 *pointer_2
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
b 5 *pointer_2
&b
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 9 *pointer_1

《C语言程序设计教程》PPT课件

《C语言程序设计教程》PPT课件
② 标准输出文件,文件指针为stdout,系统指定为 显示器。
③ 标准错误输出文件,文件指针为stderr,系统指 定为显示器,输出错误信息。
10.1 文件的概述
11
10.1.2 文件的打开与关闭
操作文件的一般步骤
打开文件 读写文件 关闭文件 打开量文的件函C:语数建配言,立一的用用个输于户文入完程件输成序缓出对与冲函数文区数据件。库文的中件联提的系供建,了立为大、文件分 读写数文据件的:读是写指、对数文据件的的追读加、等写操、作追。加和定位操作。 关闭文件在:程切序断中文调件用与这程些序函的数联时系,,必释须放先文用件缓冲
}
FFIILLE;E *文件指针变量/名* ;This is the FILE object */
10.1 文件的概述
10
10.1.1 文件和文件指针
4. 标准文件
标准文件是外部设备中的三个特殊的设备文件。它们 的文件指针是系统定义的,并由系统自动打开和关闭。这 三个标准文件分别是:
① 标准输入文件,文件指针为stdin,系统指定为 键盘。
include命区令。包含stdio.h文件。
10.1 文件的概述
12
10.1.2 文件的打开与关闭
1. 文件打开函数fopen( )
常用的调用形式: FILE *fp; fp = fopen(文件名, 文件使用方式); 文件名:需要打开的文件名称(字符串)。 文件使用方式:是具有特定含义的符号。
缓冲区cha地r 址和大小f等d; 。 /* File descriptor
*/
FILE在类usnhCso型语irgt是n言ed系中ch统a,r定无hb义os论li的dz;e对;,磁包//**盘含UBnu文g在fefte件scrtcs还dhiazi是reo.i设fh头n备o 文b文uf件*f件/er中*/

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲一、课程教学目的本课程系统研究C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用C语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。

二、课程教学要求通过本课程的研究,应熟练掌握C语言中的基本知识、各种语句及程序控制结构,熟练掌握C语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用C语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。

三、课时分配本学科计划学时为246学时,其中理论与实训课时比例为7:3.四、课程教学重、难点课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。

难点:指针的使用、结构体链表的构造和使用及函数的参数传递。

五、课程教学方法(或手段)本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。

六、课程教学内容第一章C言语概述1.教学内容(1)编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式);(2) C语言的历史背景、特点;(3) C言语源步伐的格式和步伐结构;(4) C程序的上机步骤。

2.重、难点提醒(1)重点:掌握简单的C程序格式,包括main()函数、数据说明、函数开始和结束标志等;(2)难点:编程入门和对言语的理解。

第二章算法1.教学内容(1)算法的概念及特征;评价算法优劣的方法(时间和空间);(2)简单算法举例;(3)算法的表示(自然语言、流程图、N-S流程图);(4)结构化步伐设计的基本思想及基本步调。

2.重、难点提醒(1)重点:算法流程图三种基本结构(以后各章研究中使用流程图强化对步伐的理解);(2)难点:算法概念和对结构化步伐设计思想的理解。

全的C语言指针详解PPT课件

全的C语言指针详解PPT课件

在函数中使用指针参数
03
使用指针参数来访问和修改指针所指向的内容,需要使用“-
>”或“*”运算符。
05
指针的高级应用
指向指针的指针(二级指针)
定义与声明
二级指针是用来存储另一个指 针的地址的指针。在声明时, 需要使用`*`操作符来声明二级
指针。
初始化与使用
通过使用`&`操作符获取一个指 针的地址,并将该地址存储在 二级指针中。然后,可以通过 二级指针来访问和操作原始指
当使用malloc或calloc等函 数动态分配内存后,如果 不再需要该内存,必须使 用free函数释放它。否则, 指针将指向一个无效的内 存地址。
当一个指针在函数中定义 ,但该函数返回后仍然存 在并继续指向无效的内存 地址时,就会产生野指针 。
避免指针越界访问
总结词:指针越界访问是指试图访问数 组之外的内存,这是不安全的,可能会 导致程序崩溃或产生不可预测的结果。
指针与内存分配
通过指针来访问和操作动态分配的内存空间。指针可以 存储动态分配的内存地址,并用于读取和写入该地址中 的数据。
指向结构体的指针
01
定义与声明
指向结构体的指针是指向结构体类型的指针。在声明时,需要使用结
构体类型的名称来声明指向结构体的指针。
02 03
初始化与使用
通过使用`&`操作符获取结构体的地址,并将该地址存储在指向结构 体的指针中。然后,可以通过该指针来访问和操作结构体中的成员变 量。
```
பைடு நூலகம்
指向数组元素的指针
• 指向数组元素的指针是指向数组中某个具体元素的指针。通过将指针指向数组中的某个元素,可以访问该 元素的值。
• 指向数组元素的指针可以通过定义一个指向具体元素的指针来实现。例如,定义一个指向数组中第三个元 素的指针,可以使用以下代码

《C语言程序设计》教案

《C语言程序设计》教案
输入表列-地址列表:变量的地址或字符数组的首地址
(2)格式控制字符、格式控制项与printf类似,表3-3,4。一般使用更加简单形式.
注意: 数据读入结束情况:遇空格、TAB、回车;遇非法输入;指定宽度结束。
四、其它输入/输出函数
1、putchar函数 一般形式:putchar(字符表达式);
注意:C语言算术表达式的书写形式-数学表达式的书写形式区别:(1)-(4).
3、(算术)运算符的优先级与结合性(P.233附录IV)
先按运算符的“优先级别”高低次序执行;优先级别相同,则按规定的“结合方向”处理。为了清晰起见可用圆括号“()”强制.
例1:表达式a-b*c等价于a-(b*c)。 例2:a-b+c,到底是(a-b)+c还是a—(b+c)?(b先与a运算还是先与c参与运算?) 例3:分析x=y=z=3+5
3、实型数据的舍入误差。例2-3A。
四、字符型数据
1、字符常量表示.直接表示/转义表示(特殊的转义字符,一般字符也可以转义表示).
特殊转义字符对显示/打印的控制作用
2、字符变量-1个字节,char关键词。
3、字符数据的存储-ASCII码/二进制存储-C语言可以将字符看做很短的整数处理。
例2—7A,例2—8A可以看出字符数据的具有整数特性。
(2)格式控制字符d、o、x/X、u、c、s、f、e/E、g/G构成控制项的各种常见形式。表3-1,3—2。
注意:不要死记硬背,要总结规律.一般形式:%±m n h/l格式字符
2、scanf函数(格式输入函数)
(1)格式:scanf(格式控制字符串,输入表列-地址列表)
格式控制字符串:含义与printf类似
重点

vc课程设计指针

vc课程设计指针

vc 课程设计指针一、教学目标本章节的教学目标是让学生掌握指针的基本概念、运算和应用。

具体包括:1.知识目标:学生能够理解指针的定义、特点和作用,掌握指针的赋值、解引用和指针运算。

2.技能目标:学生能够运用指针解决实际问题,如通过指针访问数组元素、修改内存数据等。

3.情感态度价值观目标:学生能够认识到指针在编程中的重要性,培养对指针操作的兴趣和自信心。

二、教学内容本章节的教学内容主要包括以下几个部分:1.指针的概念:介绍指针的定义、特点和作用,使学生理解指针的基本概念。

2.指针的运算:讲解指针的赋值、解引用和指针运算,让学生掌握指针的基本操作。

3.指针与数组:通过实例展示如何使用指针访问数组元素,修改数组数据,使学生学会指针与数组的结合应用。

4.指针与函数:介绍指针作为函数参数的使用,让学生理解指针在函数调用过程中的作用。

三、教学方法为了达到本章节的教学目标,将采用以下教学方法:1.讲授法:通过讲解指针的概念、运算和应用,让学生掌握指针的基本知识。

2.案例分析法:通过分析实际案例,让学生学会指针在解决问题中的具体运用。

3.实验法:安排课堂实验,让学生亲自动手操作,加深对指针的理解和记忆。

四、教学资源为了支持本章节的教学内容和教学方法,将准备以下教学资源:1.教材:选择合适的编程教材,提供指针相关知识的学习支持。

2.参考书:推荐一些关于指针操作的参考书籍,供学生课后深入学习。

3.多媒体资料:制作PPT、视频等多媒体资料,帮助学生更直观地理解指针的概念和操作。

4.实验设备:准备计算机、编程环境等实验设备,让学生能够进行指针操作的实践。

五、教学评估本章节的评估方式将包括以下几个方面:1.平时表现:通过学生在课堂上的参与度、提问回答和小组讨论等表现进行评估。

2.作业:布置相关的指针操作练习题,评估学生的理解和应用能力。

3.考试:安排一次针对本章节内容的考试,包括选择题、填空题和编程题,全面测试学生的掌握程度。

《C语言程序设计》教案(清华谭浩强)

《C语言程序设计》教案(清华谭浩强)

《C语言程序设计》教案(清华谭浩强)第一章:C语言概述1.1 课程介绍介绍C语言的历史和发展解释C语言的特点和应用范围强调学习C语言的重要性和目的1.2 C语言的基本概念解释编程语言和编译器的概念介绍C语言的基本数据类型和变量讲解C语言的语法结构和程序结构1.3 C语言的编译过程解释编译器的角色和功能介绍编译过程中的预处理、编译、汇编和步骤强调编译过程中产生的文件和它们的作用第二章:基本数据类型和运算符2.1 基本数据类型介绍整型、浮点型、字符型和布尔型的概念和用法解释不同数据类型的存储方式和大小强调数据类型的选择和使用场景2.2 变量和常量解释变量的概念和作用介绍变量的声明和初始化方法讲解常量的概念和用法2.3 运算符介绍算术运算符、关系运算符和逻辑运算符的概念和用法解释赋值运算符和条件运算符的作用强调不同运算符的优先级和使用规则第三章:控制语句3.1 条件语句介绍if语句的语法和用法讲解switch语句的概念和用法强调条件语句的选择和嵌套使用3.2 循环语句介绍for循环、while循环和do-while循环的概念和用法解释循环控制语句如break和continue的作用强调循环条件的设置和循环次数的控制3.3 跳转语句介绍goto语句的概念和用法讲解label标签的作用和跳转规则强调跳转语句的使用场景和可能导致的问题第四章:函数和指针4.1 函数的基本概念介绍函数的定义和声明讲解函数的参数传递和返回值强调函数的命名规则和命名规范4.2 指针的概念和用法解释指针的概念和作用介绍指针的声明和初始化方法讲解指针的赋值和指针运算4.3 指针和数组介绍数组的概念和用法解释指针和数组的关系强调指针在数组操作中的应用第五章:结构体和文件操作5.1 结构体的概念和用法介绍结构体的定义和声明讲解结构体的成员访问和内存布局强调结构体在数据组织中的应用5.2 文件操作的基本概念解释文件的概念和文件操作的重要性介绍文件打开、读写、关闭等操作的方法强调文件操作中的错误处理和文件指针的管理第六章:动态内存分配6.1 动态内存分配的概念介绍动态内存分配的原因和必要性解释malloc、calloc和realloc函数的作用和用法强调动态内存分配的注意事项和错误处理6.2 链表的概念和用法介绍链表的定义和结构讲解链表的创建、插入、删除和遍历操作强调链表的优势和应用场景6.3 动态内存分配的应用实例通过实例演示动态内存分配在实际编程中的应用讲解内存泄漏和内存溢出的概念强调编写高效和安全的程序的重要性第七章:字符串处理7.1 字符串的基本概念介绍字符串的定义和表示方法解释字符串的长度和字符串的结束标志强调字符串与数组的区别和联系7.2 字符串的常用函数介绍字符串的输入输出函数如printf和scanf 讲解字符串的拷贝、连接、比较等操作函数强调字符串处理函数的使用和注意事项7.3 字符串处理的应用实例通过实例演示字符串处理在实际编程中的应用讲解字符串排序、查找和替换等操作强调字符串处理在文本分析和数据处理中的应用第八章:标准库函数8.1 标准输入输出库函数介绍标准输入输出库stdio.h中的常用函数讲解文件读写、数据转换等函数的用法和功能强调标准库函数的使用场景和注意事项8.2 字符串处理库函数介绍字符串处理库string.h中的常用函数讲解字符串比较、查找和替换等函数的用法和功能强调字符串处理库函数的使用和与其他库函数的配合8.3 数学计算库函数介绍数学计算库math.h中的常用函数讲解数学运算、三角函数和指数函数等函数的用法和功能强调数学计算库函数在数学计算和科学计算中的应用第九章:并发编程和同步机制9.1 并发编程的基本概念介绍并发编程的定义和目的解释进程和线程的概念和关系强调并发编程的优势和挑战9.2 并发编程的同步机制介绍互斥锁、条件变量和信号量等同步机制的原理和用法讲解同步机制在多线程编程中的应用和注意事项强调同步机制在避免竞态条件和数据一致性中的重要性9.3 并发编程的应用实例通过实例演示并发编程在实际应用中的优势和挑战讲解多线程的创建、同步和通信等操作强调并发编程在多任务处理和性能优化中的应用第十章:C语言编程实践10.1 编程实践的重要性强调编程实践在学习和掌握C语言中的重要性解释编程实践对于提高编程能力和解决问题的作用强调编程实践中的代码质量和编程规范10.2 编程实践的项目和案例介绍常见的编程实践项目和案例讲解实际编程中的问题解决方法和技巧强调编程实践中的调试和测试的重要性10.3 编程实践的资源和工具介绍编程实践中的常用工具和环境讲解集成开发环境(IDE)的使用和代码管理强调编程实践中的团队合作和代码分享的重要性重点和难点解析重点环节1:C语言的基本概念和特点需要重点关注C语言的历史和发展,以及其特点和应用范围。

高树芳C语言程序设计--第十章

高树芳C语言程序设计--第十章

[解决方案]定义结构体类型变量存储学生信息,
使用scanf从键盘输入数据,使用fprintf函数按格 式输出数据到文件(生成data3.txt文件)。
程序代码
10
10.2
文件的读写
相关知识:
1.文件的读写 2.格式化读写函数
11
10.2
文件的读写
[课堂训练10-1] 1.使用Windows的记事本建立一个文件,其 中写入15个任意整数,数据之间用逗号分隔。 编程输出该文件所有的奇数。 2.编程以只读方式打开案例10-3中的 data3.txt文件,在屏幕上输出所有学生的数 据。
第10章
文件
知识目标: 1. 理解文件和文件指针的概念 2.掌握文件的打开和关闭方法 3.掌握文件的读写操作 4.掌握文件的定位与随机读写操作
1
第10章 文件 能力目标: 1. 会打开和关闭文件 2.会对文件进行读写和定位等操作
本章内容: 文件的定义,文件型指针,文件的打开与关闭,文件 的读写,文件的定位与随机读写。
2
第10章 10.1 10.2 10.3 10.4
文件
文件的打开与关闭 文件的读写 文件的定位和随机读写 知识拓展
3
10.1 文件的打开与关闭
案例10-1
输出文件中的整数及其和
4
10.1 文件的打开与关闭
案例10-1 [案例任务]
输出文件中的整数及其和
使用Windows的记事本在磁盘上与C程序文件在同一目 录下建立一个文件名为“data1.txt”的文本文件(如 图10-1所示),以空格、制表符或回车为分隔符输入 任意个整数,设计C程序,以只读方式打开此文件,若 该文件不存在,则输出“不能打开文件!”,若打开 成功,则输出所有整数,以及整数的个数和它们之和。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十章指针课题:第十章指针§1-§2教学目的:1、了解指针与地址的概念2、掌握指针变量的定义、初始化及指针的运算教学重点:教学难点:指针变量的定义、初始化及指针的运算指针的运算步骤一复习引导指针是C语言的一个重要概念,也是C语言的一个重要特色。

正确而灵活地运用它,可以有效地表示复杂的数据结构;能动态分配内存;能方便地使用字符串;有效而方便地使用数组;在调用函数时能得到多于1个的值;能直接处理内存地址等,这对设计系统软件是很必要的。

指针的概念比较复杂,使用也比较灵活,因此初学者时常会出错,务请在学习本章内容时十分小心。

步骤二讲授新课§10.1 地址和指针的概念计算机的主存储器被分成一个个存储单元,为了区分各存储单元,要为每个存储单元编号,这个编号即地址。

例:i =3; 或scanf(“%d”, &i);是将3送给i所在的空间。

例:将3送到变量I_pointer所“指向”的单元(即I所标志的单元)。

所谓“指向”,是通过地址来体现的,I_pointer中的值为2000,它是变量I 的地址,这样就在I_pointer和变量之间建立起一种联系,即通过I_pointer能知道I的地址,从而找到变量I 的内存单元。

因而在C语言中,将地址形象化地称为“指针”。

意思是通过它能找到以它为地址的内存单元。

一个变量的地址称为该变量的“指针”。

内存单元的地址和内存单元的内容是两个不同的概念。

指针:就是地址,即内存单元的编号。

指针变量:用来存放另一变量的地址(即指针)的变量。

如:地址2000是变量i的指针;i_pointer是指针变量,其值就是指针2000。

§10.2变量的指针和指向变量的指针变量变量的指针就是变量的地址。

存放变量地址的变量是指针变量,用来指向另一个变量。

*i_pointer 表示i_pointer 所指向的变量。

一、定义一个指针变量指针变量的定义包含三个方面的内容:⑴指针类型说明,即定义变量为一个指针变量⑵指针变量名⑶变量值(指针)所指向的变量的数据类型。

格式:存储类型基类型*指针变量名;例:int *pointer_1, *pointer_2;float *pointer_3;char *pointer_4;二、指针的引用指针变量有两个运算符:& :取地址运算符功能:取变量地址;单目,右结合。

* :取内容运算符(“间接访问”运算符)功能:只能跟地址,取变量所指向单元的内容;单目,右结合。

例:&a为变量a的地址,*p 为指针变量p所指向的存储单元。

例:int a=5, *p=&a;printf ( “%d”, *p );main(){ int a,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\n”,a,b);printf(“%d,%d\n”,*pointer_1, *pointer_2);}输出结果:100, 10100, 10评注:1、在第3行虽然定义了两个指针变量,只是提供了两个指针变量,但并未指向任何一个整型变量。

称为指针“悬空”。

2、最后一行的*pointer_1和pointer_2就是变量a和b。

3、程序中两处出现*pointer_1等,含义不同。

程序第3行中的*pointer_1表示定义指针变量pointer_1。

它前面的*只是表示该变量是指针变量。

程序最后一行中的*pointer_1则代表变量,即pointer_1所指向的变量。

4、第5行中的pointer_1=&a 是将a的地址赋给指针变量pointer_1,而不是*pointer_1。

注意:不应写成:*pointer_1=&a;5、从上例中可看出,*pointer_1等价于a,*pointer_2等价于b,故凡在程序中出现a的地方均可用*pointer_1 代替。

所以,若有:int x, y, *px=&x ;则下面的运算均是正确的:y=*px+1; /*把x 的内容加1 送变量y*/printf(“%d\n”, px ); /*打印当前x 的内容*/d=sqrt((double) px); /*把x的平方根送变量d*/px=0; /*把x 置为0*/*px+=1; /*把x 的值加1*/(*px)++; /*使x 的值加1*/y=(*px)++; /*即y=x, x++*/6、假设px和py都被定义为指向int 对象的指针,而且px当前已指向了int 型变量x,则执行:py=px; /*把指针px的内容拷贝到指针py中去*/即py和px 这两个不同的指针指向了同一对象x7、指针不是整数,不能将它与整数混为一谈。

例:# include <stdio.h>main(){ int x=100,*p;p=x;printf(“%d”, p );}例如:# include <stdio.h>main(){ int a, b, *d=&a;b = d;printf( “%d \n”, b );……}——编译不出错,但得不到希望的值关于&和*运算符的说明:假设已执行pointer_1=&a;1、&*pointer_1含义是什么?&*pointer_1与&a相同,即变量a的地址。

2、*&a的含义是什么?先进行&a运算,得a的地址,再进行*运算。

*&a、*pointer_1及变量a等价。

3、(*pointer_1) + + 相当于a + +。

它与*pointer_1 + + 不同。

4、*pointer_1 + + 等价于*(pointer_1 + +),即先进行*运算,得到a的值,然后使pointer_1的值改变,这样pointer_1不再指向a了。

例10.2:输入a和b两个整数,按先大后小的顺序输出a和b。

main(){ int *p1,*p2,*p, a, b;scanf(“%d,%d”,&a,&b);p1=&a; p2=&b;if (a<b){p=p1; p1=p2; p2=p;}printf(“\n a=%d,b=%d\n”,a,b);printf(“max=%d,min=%d\n”,*p1,*p2);}运行情况:5,9<Enter>a=5,b=9max=9,min=5三、指针变量作为函数参数例10.3对输入的两个整数按大小顺序输出。

先考察如下程序,看是否能得到预期的结果swap(int p1, int p2){ int temp;temp = p1;p1 = p2;p2 =temp;}main(){ int a, b;scanf(“%d, %d”, &a, &b);if(a<b) swap(a, b);printf(“\n%d,%d\n”,a,b);}不能得到预期的结果。

改为:swap(int *p1,int *p2){ int temp;temp = *p1;*p1 = *p2;*p2 =temp;}main(){ int a,b;int *pointer_1,*pointer_2;scanf(“%d,%d”,&a,&b);pointer_1=&a;pointer_2=&b;if(a<b) swap(pointer_1,pointer_2);print f(“\n%d,%d\n”,a,b);}注:如果想通过函数调用得到n个改变的值,可以:1、在主调函数中设n 个变量,用n个指针变量指向它们;2、然后将指针变量作实参,将这n 个变量的地址传给所调用的函数的形参;3、通过形参指针变量,改变该n个变量的值;4、主调函数中就可以使用这些改变了值的变量。

四、指针(变量)的初始化指针置初始化值的格式:存储类型基类型*指针名=初始化值;如:main(){ static int a;int *p=&a, *p1=p;…… }再如:int *p = 0;或int *p = NULL;五、指针的运算1、指针的算术运算指针仅能进行加、减算术运算如:p+n , p-n , p++ , p-- , ++p , --pp-= n , p+= n , p1-p2 等其中n是整数,p、p1、p2均为指针;施行加法运算时,指针向地址增大的方向移动;施行减法运算时,指针向地址减小的方向移动;移动长度取决于指针的基类型,由计算机决定;如有:int a,b,c, *pt =&a;则pt++ 则指针向后移动两个字节;再如:main(){ int *p1,a=8,b=3;p1=&a;printf(“%d,%d\n”, (*p1)++, *p1++);printf(“%d,%d\n”,a, *p1);}运行结果:3 ,88 ,4注:p1+k = p1+k*sizeof(p1的基类型);p1- k = p1- k*sizeof(p1的基类型);如:strlen(char *s){ char *p=s;while(*p!=…\0‟)p++;return(p-s);}2、指针的关系运算设指针p1,p2指向同一数组中的元素,则p1<p2为真:表示p1在p2的前面;p1<p2为假:表示p2在p1的前面;p1= =p2:表示p1、p2指向数组中的同一元素;同理可推出>、>=、<=、!=比较的意义;不可将指针与其他类型的对象作比较;若两指针指向不同数组中的元素,也不可比较;允许将指针与NULL或数值0进行= =或!=的比较,以便判定一个指针是否为空指针。

步骤三课堂小结本课介绍了指针与地址的概念,指针变量的定义、初始化及指针的运算。

指针:就是地址,即内存单元的编号。

指针变量:用来存放另一变量的地址(即指针)的变量。

例如:int a=5, *p=&a;printf ( “%d”, *p );注意:运算符*和&的用法,指针变量的自加自减运算。

步骤四布置作业课后作业:第十章课后练习10.110.2课题:第十章指针§3 教学目的:掌握指针与数组的知识教学重点:教学难点:指向数组的指针变量指向二维数组的指针步骤一复习引导上节课介绍了指针变量的定义及其赋值。

一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。

指针变量既然可以指向变量,当然也可以指向数组和数组元素(把数组起始地址或某一元素的地址放到一个指针变量中)。

相关文档
最新文档