第十章 指针
课 题 | 第十章指针变量本身有地址吗 变量的指针与指针变量 | ||
教 学 目 的 | 1、了解指针与地址的概念 2、掌握指针变量的定义、引用及指针变量作为参数 | ||
教 材 分 析 | 教学重点 | 指针变量的定义、引用及指针变量作为参数 | |
教学难点 | 指针变量作为参数 | ||
课时安排 | 2 | 教学方法 | 讲授与演示法相结合 |
教 学 内 容 及 过 程 设 计 | 一、讲授新课 一)地址与指针的概念 二)变量的指针与指针变量 变量的指针就是变量的地址。 指针变量是一种特殊类型的变量,它是用于专门存放地址的。 1、指针变量的定义 定义形式:基类型 *指针变量名; 注意: (1)指针变量前的“*”,表示改变量的类型为指针型变量,“*”后的才是指针变量名。 (2)在定义指针变量时必须指定基类型 2、指针变量的引用 指针变量只能存放地址,不要将一个整型量(或其他任何非地址类型的数据)赋值给一个指针变量。 (1)两个相关运算符: 1)&:取地址运算符。可以获取某个变量的地址 2)*: 指针运算符,获取某个指针变量所值向的变量的值 3、指针变量作为函数参数 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。 二、 课堂小结 本课介绍了指针与地址的概念,指针变量的定义、引用及作为参数的使用。 指针:就是地址,即内存单元的编号。 指针变量:用来存放另一变量的地址(即指针)的变量。 例如:int a=5, *p=&a; printf ( “%d”, *p ); 注意:运算符*和&的用法,指针变量的自加自减运算。 | ||
备注 | 安排上机练习 | ||
第十章 指针
课 题 | 第十章 数组与指针 | ||
教 学 目 的 | 掌握指针与数组的知识 | ||
教 材 分 析 | 教学重点 | 指向数组的指针变量 | |
教学难点 | 指向二维数组的指针 | ||
课时安排 | 2 | 教学方法 | 讲授与演示法相结合 |
教 学 内 容 及 过 程 设 计 | 一、复习引导 上节课介绍了指针变量的定义及其赋值。一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组和数组元素(把数组起始地址或某一元素的地址放到一个指针变量中)。 二、 讲授新课 所谓数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。 引用数组元素可以用下标法(如a[3]),也可以用指针法,即通过指向数组元素的指针到所需的元素。使用指针法能使目标程序质量高(占内存少,运行速度快)。 一)指向一维数组的指针 定义形式: int a[10]; int *p; p=&a[0]; 或 p=a; 含义:把数组的首地址赋给指针变量p。 也即: int *p=&a[0]; 或 int *p=a; 二)通过指针引用数组元素 按C的规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一个数组中的下一个元素(而不是简单地加1)。 如果p的初值为&a[0],则: p+i a+i &a[i],即指向a数组的第i个元素。 *(p+i) *(a+i) a[i]。 指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价 引用数组元素时,可以用: 1、下标法,如:a[i] 2、指针法,如:*( a+i ) 或 *( p+i ) 其中,a是数组名,p是指向数组的指针 三)数组名作函数参数 用数组名作实参,在调用函数时是把数组的首地址传送给形参。即实参数组与形参数组共占同一段内存。 如果有一个实参数组,想在函数中改变此数组的元素的值,实参与形参的对应关系有以下4种情况: 1、形参和实参都用数组名; 2、实参用数组名,形参用指针变量; | ||
教 学 内 容 及 过 程 设 计 | 3、实参形参都用指针变量; 4、实参为指针变量,形参为数组名。 四)指向二维数组的指针和指针变量 1、二维数组的地址 int a[3][4]; 一级指针:(二维数组某一个元素的指针) a[i], *(a+i) , &a[i][0] 都是元素a[i][0]的地址。 a[i]+j , *(a+i)+j , &a[i][j] 都是元素a[i][j]的地址。 二级指针:(二维数组某一行的地址) a+i , &a[i] 是二维数组中第I行的地址(行号从0计算) 二维数组元素的引用: (1) 下标法:a[i][j] (2) 指针法: *(a[i]+j) , *(*(a+i)+j) 2、二维数组与指针 (1)指向二维数组元素的指针变量(一级指针变量) 定义: 二维数组元素类型 *指针变量名; 使用过程与指向一维数组元素的指针变量基本相似,只是要注意数组越界情况。 (2)指向二维数组某一行的指针变量(二级指针变量) 定义形式:数组元素类型 (*指针变量名)[常量表达式]; 含义:定义了一个指针变量,该指针变量指向一个长度为常量表达式值的一维数组 例如:int (*q)[4]; 定义了一个指针变量q,他指向一个长度为4的整型数组,此时,q的值是该一维数组的起始地址,而不是该一维数组的第一个元素的地址。 有二维数组: int a[3][4]; 若有:int (*q)[4]; 使q指向二维数组第0行的赋值语句是:q = a;或q=&a[0]; 使q指向二维数组第i行的赋值语句是:q = a+i;或q=&a[i]; 在此前提下:二维数组元素a[i][j]可以采用 *(*q+j)引用。 若有:int *q ; 使q指向二维数组第一行第一个元素的赋值语句是q = a[0];或q = *a; 三、课堂小结 本课介绍了指向数组的指针,主要是指向一维数组的指针。用指针变量p指向数组a,指针变量p可以++、--,表示指向数组的上一元素或下一元素。但C编译程序不作下标越界检查。使用指针既方便有灵活,但初学者容易搞错。还介绍了指针与二维数组,指向二维数组的指针有指向元素的指针和行指针,使用时应注意它们的区别。 四、布置作业 《C语言习题解答》同步练习 | ||
备注 | 上机练习 | ||
第十章 指针
课 题 | 指针与字符串 | ||
教 学 目 的 | 在掌握指针与数组的知识基础上,掌握字符串的指针与指向字符串的指针变量 | ||
教 材 分 析 | 教学重点 | 指向字符串的指针变量 | |
教学难点 | 用指针处理字符串 | ||
课时安排 | 2 | 教学方法 | 讲授与演示法相结合 |
教 学 内 容 及 过 程 设 计 | 一、讲授新课 一)字符串的指针和指向字符串的指针变量 1、字符串的表示形式 (1)用字符数组存放一个字符串。 (2)用字符指针指向一个字符串。 2、字符串指针作函数参数 3、字符指针变量和字符数组的讨论 (1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址,决不是将字符串放到字符指针变量中。 (2)赋值方式。对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值;char str[14]; str=“I love China.”; 对字符指针变量,可以采用下面方法赋值: char *a; a= “I love China.”; /*赋给a的是串的首地址*/ (3)对字符指针变量赋初值: char *a=“I love China.”; 等价于 char *a; a=“I love China.”; 而对数组的初始化: char str[14]={“I love China.”}; 不等价于 char str[14]; str[]=“I love China.”; 即数组可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。 (4)如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。 而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个地址值,也就是说,该指针变量可以指向一个字符型数据,但如果未对它赋一个地址值,则它并未具体指向一个确定的字符数据。这很危险。 (5)指针变量的值是可以改变的,数组名虽然代表地址,但它的值是不能改变的。可以下标形式引用所指的字符串中的字符。 (6)用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。也可以用字符数组实现,但由于不能采用赋值语句对数组整体赋值。 二、课堂小结 本课介绍了指针与二维数组、指针与字符串,指向二维数组的指针有指向元素的指针和行指针,使用时应注意它们的区别。我们既要掌握用数组处理字符串,也要掌握用指针变量处理字符串。要区分这两种方法的不同之处。 三、布置作业 《C语言习题解答》同步练习 | ||
备注 | 上机练习 | ||
第十章 指针
课 题 | 第十章 指针与函数、指针数组 | ||
教 学 目 的 | 1、了解指针与函数的概念 2、掌握指针数组,二级指针等知识 | ||
教 材 分 析 | 教学重点 | 掌握指针数组,二级指针等知识 | |
教学难点 | 指针数组,二级指针 | ||
课时安排 | 2 | 教学方法 | 讲授与演示法相结合 |
教 学 内 容 及 过 程 设 计 | 一、复习引导 前面介绍了指针与维数组、指针与字符串,我们可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。 二、讲授新课 一)函数的指针和指向函数的指针变量 函数的地址:函数存储区域的首地址就是该函数的入口点,其函数名表示了入口地址。 1、函数指针变量的定义:存储类型 数据类型 (*函数指针名)( ); 2、返回指针值的函数 一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。其概念与以前类似,只是带回的值的类型是指针类型而已。 格式: 类型名 *函数名(参数表); 二)指针数组和指向指针的指针 1、指针数组的概念:一个数组中的元素均为指针类型,称为指针数组。 形式: 存储类型 类型名 *数组名[数组长度] 2、指向指针的指针:二级指针的定义: char **p; 含义:表示指针变量p是指向一个字符指针变量(即指向字符型数据的指针变量)的。 三)指针数组作main函数的形参: 四)有关指针的数据类型和指针运算的小结 1、有关指针的数据类型的小结 见书中的表 2、指针运算小结 (1)指针变量加(减)一个整数 例:p++、p--、p+i、p-=i等 (2)指针变量赋值 将一个变量地址赋给一个指针变量。p=&a; p1=p2; (3)指针变量可以有空值,即该指针变量不指向任何变量。如 : p=NULL; (4)两个指向同一数组元素的指针变量可以相减 (5)两个指向同一数组的指针变量可作关系运算 三、布置作业 10.10、10.11、《C语言习题解答》同步练习 | ||
备注 | 上机练习 | ||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论