文档介绍:C语言程序设计---指针-样本教案
指针程序设计 第一讲
内容
说明
指针的概念
变量指针和一维数组指针
3系运算
指针变量1 关系运算符 指针变量2
六、指向字符串的指针变量的使用
1.将指针变量指向字符串常量的方法
例:将字符指针变量p指向“abcd”
方法一:初始化形式
数据类型 *指针变量=字符串常量 char *p=“abcd”;
方法二:赋值语句
指针变量=字符串常量 char *p;p=“abcd”;
2.指向字符串常量的指针变量的使用
(1)处理整个字符串
输出字符串 printf(“%s”,指针变量);
输入新的字符串代替原字符串 scanf(“%s”,指针变量);
(2)处理字符串中的单个字符
第i个字符的表示方法: *(指针变量+i)
3.指向存放字符串的字符数组的指针变量的使用
处理字符串中的单个字符就是处理一维数组的元素,方法同
处理一维数组元素。注意:字符数组元素的类型是字符型。
七、小结
指向变量、一维数组、字符串的指针变量的定义和应用。
八、作业
数组名的特殊性
实例讲解
举例
注意:数组名是否可以进行这些运算?
两个指针变量必须指向同一数组
举例
指针程序设计 第 二 讲
内容
说明
主要
内容
重点
1.多维数组指针和指向多维数组的指针变量的引用
2.函数指针和指向函数的指针变量
3.指针数组和多级指针
主要讲二维数组指针
先复习二维数组的性质
难点
问题
提出
重点
难点
为什么?
指向二维数组的指针变量的引用
指向函数的指针变量的引用
指向二维数组的指针变量
指向函数的指针变量
前面学习了通过指针访问一维数组,那么如何通过指针对二维数组进行访问呢?二维数组中隐含着怎样的地址关系呢?
一 、指针表示二维数组
二维数组元素的地址
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
二维数组a[3][4]可看成由3个一维数组a[0]、a[1]、a[2]组成,每个一维数组由4个元素组成。如下图所示。
23
1
3
5
7
9
13
11
15
17
19
21
a[0]
a[1]
a[2]
a
a+1
a+2
a[0]
a[0]+1
a[0]+2
a[0]+3
23
a代表二维数组首元素的地址,a[0]、a[1]、a[2]是一维数组名,而C语言规定数组名代表数组首元素的地址,即a[0]等价于&a[0][0]、a[1]等价于&a[1][0]、a[2]等价于&a[2][0]。
2、使用指针表示二维数组元素
进一步分析:a[0]等价于&a[0][0],a[0]+1等价于&a[0][1],a[0]+2等价于&a[0][2],a[0]+3等价于&a[0][3]。
因为a[0]和*(a+0)等价,a[1]和*(a+1)等价,a[i]和*(a+i)等价,因此:
a[0]+1等价 *(a+0)+1等价 &a[0][1]
a[1]+2等价 *(a+1)+2等价 &a[1][2]
注意:不要将*(a+1)+2 错写成*(a+1+2)。
进一步分析:因为&a[0][1]等价a[0]+1等价 *(a+0)+1,那么*(*(a+0)+1)或*(*a+1)等价a[0][1]的值。*(a[i]+j)或*(*a+i)+j)等价a[i][j]的值
二、如何使用指针变量指向二维数组?
当定义了二维数组和同类型的指针变量后,可使这个指针变量:
①指向二维数组的首地址
②指向二维数组中某个一维数组
③指向二维数组的某个数组元素
1.指针变量指向二维数组的某个元素
(1)让指针变量指向二维数组的某个元素的方法
初始化:数据类型 *指针变量=&数组名[下标1][下标2]
赋值:指针变量=&数组名[下标1][下标2]
(2)二维数组元素的引用方法 *指针变量
【例1】输入2行3列的矩阵元素,存入二维数