深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 59 页 共 83 页
第七单元(4):指针数组
教学内容 指针数组及指针数组作main函数的形式参数
教学目标
应知 指针数组的定义、引用,main函数形参的意义
应会 应用指针数组处理多个字符串,编写带有形参的主函数
难点 指针数组的应用
教学方法
项目拓展结合实例教学法
教学过程
1,提问与复习
采用采用指针变量作函数参数时与普通变量作函数参数有什么不同?在什么情况下需要使用指针变量作函数参数?
调用函数参数传递时,传值与传地址有什么区别?那些情况下是传地址调用?
使用指向字符或字符串的指针进行字符或字符串的操作时需要注意哪些内容?
字符串结束标志在程序中的作用
指向数组的指针作函数参数时的作用
使用指向字符或字符串的指针进行字符或字符串的操作时需要注意哪些内容?
有程序题目要求采用指针实现时,要注意哪些问题?
2,编写文本菜单“1-display 2-insert 3-delete 4-save 5-quit,,
利用指针数组显示
定义指针数组并初始化 char *menu[]= {“1-display”,“2-insert”,
“3-delete”,“4-save”,“5-quit” }; (每个元素都是一个指针变量,用
menu[i]引用)
设置循环语句逐个输出菜单项字符串 printf(“%s”,menu[i]);(menu[i]是一个指向字符串的指针数组元素,即指针变量)
深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 60 页 共 83 页
3,指针数组使用实例:指针数组作主函数形参
编写带有帮助说明的程序,也就是当输入执行文件名,后根“/?”时,将提示命令行的操作方法。
编写信息提示函数:void user(void)
{,you are right”;

编写主函数
void main(int argc,char *argv[ ])
{ int i ;
if(argc= =2)
if ( strcmp(argv[1],”/?”)= =0) {user();return; }
}
在Tc环境中设置output file directory,将程序编译为目标文件 compile
- compile to obj
将程序制成可执行文件 compile - ->make exe file
在Dos环境中执行,输入命令:mainarg /?
讨论程序执行过程
学生容易出错的地方
指针数组混同于一维数组
对指针的每一个元素都是指针的理解不太容易
问题与讨论
如何使用指针来进行数组的输入输出操作?
为什么在使用指针(尤其是指向数组的指针)时,必须明确指导指针当前所指的变量或数组元素是哪一个?
指向数组的指针作函数参数时的作用
指针定义时为什么必须指定类型?
使用指向字符或字符串的指针进行字符或字符串的操作时需要注意哪些内容?
字符串结束标志在程序中的作用
有程序题目要求采用指针实现时,要注意哪些问题?
指针数组是什么意思?
指向函数的指针是什么意思?
返回指针的函数如何定义和调用?
深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 61 页 共 83 页
小结(可由问题与讨论方式给出)
元素都是指针类型数据的数组称为指针数组,指针数组比较适合用来处理若干个字符串
指针数组定义 int *p[4],[]比*优先级高,所以p[4]表示是一个数组,再加*
表示是一个指针数组。
指针数组作main函数形参,如例子中运行“mainarg /?”,这是两个实参,在
mainarg程序中,有两个形参,实参形参结合后,则程序中argc为2,这两个字符串分别由两个指针指向,即指针argv[0]指向文件名“mainarg”,argv[1]指向
“/?”。
返回指针的函数:采用返回指针值的函数,在用户自定义函数中,将数组的第五个元素求平方,返回其指针,在主程序中打印输出该元素值。;
课后任务
书写指针与函数章节的读书报告