1、1 112 2本章主要内容本章主要内容1、概述、概述-地址的概念地址的概念2、指针与变量、指针与变量-指针作为函数的参数指针作为函数的参数3、指针和数组、指针和数组-指针运算,指向数组的指针指针运算,指向数组的指针4、指针与字符串、指针与字符串-用指针处理字符串用指针处理字符串5、数组、指针作为函数的参数、数组、指针作为函数的参数1、数组元素作为参数;、数组元素作为参数;2、数组名作为参数、数组名作为参数3、指针变量与数组名作为参数、指针变量与数组名作为参数6、指针与函数、指针与函数1、返回指针的函数;、返回指针的函数;2、指向函数的指针、指向函数的指针7、指针数组、指针数组-指针变量的数组指
2、针变量的数组第五节第五节 数组、指针作为函数的参数数组、指针作为函数的参数31、数组元素作为参数;、数组元素作为参数;2、数组名作为参数、数组名作为参数3、指针变量与数组名作为参数、指针变量与数组名作为参数1、数组作为函数的参数、数组作为函数的参数数组元素数组元素作为函数的参数:数组元素作为函作为函数的参数:数组元素作为函数的参数,与简单变量作实在参数一样,是数的参数,与简单变量作实在参数一样,是单向传递,即:单向传递,即:“值传递值传递”。数组名数组名作为函数的参数:作为函数的参数:实参和形参都必须实参和形参都必须是相同类型的是相同类型的数组名数组名。42.数组名数组名作为函数的参数作为函数
3、的参数 例例:编一函数,计算任意一个一维数组的数:编一函数,计算任意一个一维数组的数组元素的平均值。组元素的平均值。56 6例例:编一函数,计算任意一个一维数组的数组元素:编一函数,计算任意一个一维数组的数组元素的平均值。的平均值。6主函数:主函数:78 8例例:写一个函数,将一个字符串按反序存放。写一个函数,将一个字符串按反序存放。10103.多维数组名多维数组名作为函数的参数(了解)作为函数的参数(了解)例例:编函数求一个编函数求一个34矩阵中最大的元素。矩阵中最大的元素。1.定义函数:定义函数:float largest(float a34)2.函数实现:函数实现:a)max 表示最大值
4、表示最大值b)将将 a00 送给送给 max;c)从数组的第从数组的第0行第行第0列开始,逐个与列开始,逐个与 max 进进行比较,如果某个数组元素比行比较,如果某个数组元素比 max 大,将大,将该数组元素送入该数组元素送入max中;中;111212131314141515第五节第五节 数组、指针作为函数的参数数组、指针作为函数的参数151、数组元素作为参数;、数组元素作为参数;2、数组名作为参数、数组名作为参数3、指针变量与数组名作为参数、指针变量与数组名作为参数有以下有以下4种形式:种形式:实际参数实际参数与与形式参数形式参数均为均为数组名数组名实际参数实际参数为为数组名数组名,形式参数
5、形式参数为为指针变量指针变量实际参数实际参数为为指针变量指针变量,形式参数形式参数为为数组名数组名实际参数实际参数和和形式参数形式参数均为均为指针变量指针变量3、指针变量和数组名作为函数的参数、指针变量和数组名作为函数的参数161.实际参数与形式参数均为数组名实际参数与形式参数均为数组名:调用函数的格式:调用函数的格式:main()类型名类型名 数组名数组名110;函数名函数名(数组名数组名1);定义函数的格式:定义函数的格式:函数类型函数类型 函数名函数名(类型名类型名 数组名数组名)2.实参为数组名,形参为指针变量:实参为数组名,形参为指针变量:调用函数的格式:调用函数的格式:main()
6、类型名类型名 数组名数组名110;函数名函数名(数组名数组名1);定义函数的格式:定义函数的格式:函数类型函数类型 函数名函数名(类型名类型名 *p)3.实参为指针变量,形参为数组名实参为指针变量,形参为数组名:调用函数的格式:调用函数的格式:main()类型名类型名*p;函数名函数名(p);定义函数的格式:定义函数的格式:函数类型函数类型 函数名函数名(类型名类型名 数组名数组名 )4.实参和形参均为指针变量实参和形参均为指针变量;调用函数的格式:调用函数的格式:main()类型名类型名*p;函数名函数名(p);定义函数的格式:定义函数的格式:函数类型函数类型 函数名函数名(类型名类型名*p
7、)2121例例:求一维数组中下标为偶数的元素之和。:求一维数组中下标为偶数的元素之和。分析:分析:1 1、定义数组,从键盘接收数据;、定义数组,从键盘接收数据;2 2、定义相关变量,对数组进行求和;、定义相关变量,对数组进行求和;3 3、输出结果。、输出结果。2222解法一:主函数中完成算法,使用下标法引用数组元素。解法一:主函数中完成算法,使用下标法引用数组元素。22222323解法二:主函数中完成算法,用指针法引用数组元素。解法二:主函数中完成算法,用指针法引用数组元素。23232424解法三:实参是数组名,形参是数组名,调用函数。解法三:实参是数组名,形参是数组名,调用函数。242425
8、25解法四:实参是数组名,形参是指针变量,调用函数。解法四:实参是数组名,形参是指针变量,调用函数。25252626解法五:实参是指针变量,形参是数组名,调用函数。解法五:实参是指针变量,形参是数组名,调用函数。26262727解法六:实参是指针,形参是指针变量,调用函数。解法六:实参是指针,形参是指针变量,调用函数。272728282828本章主要内容本章主要内容1、概述、概述-地址的概念地址的概念2、指针与变量、指针与变量-指针作为函数的参数指针作为函数的参数3、指针和数组、指针和数组-指针运算,指向数组的指针指针运算,指向数组的指针4、指针与字符串、指针与字符串-用指针处理字符串用指针处
9、理字符串5、数组、指针作为函数的参数、数组、指针作为函数的参数1、数组元素作为参数;、数组元素作为参数;2、数组名作为参数、数组名作为参数3、指针变量与数组名作为参数、指针变量与数组名作为参数6、指针与函数、指针与函数1、返回指针的函数;、返回指针的函数;2、指向函数的指针、指向函数的指针7、指针数组、指针数组-指针变量的数组指针变量的数组第六节第六节 指针与函数指针与函数291.1.返回指针值的函数返回指针值的函数2.2.用指向函数的指针变量调用函数用指向函数的指针变量调用函数3.3.用指向函数的指针变量作函数的参数用指向函数的指针变量作函数的参数掌握返回指针的函数的概念掌握返回指针的函数的
10、概念掌握指向函数的指针的概念掌握指向函数的指针的概念1.返回指针值的函数返回指针值的函数函数的返回值可以是函数的返回值可以是指向基本数据类型的指针指向基本数据类型的指针类型。类型。定义形式如下:定义形式如下:类型说明符类型说明符 *函数名函数名(参数表参数表)/函数体函数体 30例例:int *search(int*x,int n)int*p;p=x+n;return p;1.*search(x,n)等价等价*(search(x,n);2.函数名为函数名为search;3.函数的返回值为指向整型的指针。函数的返回值为指向整型的指针。31312.函数的指针函数的指针-指向函数的指针指向函数的指针
11、32类型说明符类型说明符 (*指针变量名指针变量名)();例:例:int (*p)();意味着:定义了一个指向函数的指针变量意味着:定义了一个指向函数的指针变量p,函数的返回值是整型。函数的返回值是整型。33333334指向函数指向函数调用函数调用函数3.3.用函数的指针作参数(了解)用函数的指针作参数(了解)可以用可以用指向函数的指针变量指向函数的指针变量作为被调用函数的作为被调用函数的参数参数;由于由于指针变量指针变量是指向某一函数的,所以先后是指向某一函数的,所以先后使指针指向不同的函数,就可以在被调函数中使指针指向不同的函数,就可以在被调函数中调用不同的函数。调用不同的函数。35例:例
12、:设一个函数设一个函数 process,在调用它的时候,在调用它的时候,每次实现不同的功能。每次实现不同的功能。(1)求求a和和b之和。之和。(2)求求a,b中大者。中大者。(3)求求a,b中小者。中小者。分析分析(1)函数名作实在参数;函数名作实在参数;(2)process的形参中,定义一个指向函的形参中,定义一个指向函数的指针。数的指针。36373738383939u说明说明u用指向函数的指针作函数参数的优越性在用指向函数的指针作函数参数的优越性在于能在调用一个函数过程中执行所指定的函于能在调用一个函数过程中执行所指定的函数,从而增加处理问题的灵活性。数,从而增加处理问题的灵活性。u在处理
13、不同函数时,在处理不同函数时,process函数本身并未函数本身并未改变,而只是改变了调用它的实参。如果将改变,而只是改变了调用它的实参。如果将另一个函数传给另一个函数传给process,只需改变一个实参只需改变一个实参值即可。值即可。404141本章主要内容本章主要内容1、概述、概述-地址的概念地址的概念2、指针与变量、指针与变量-指针作为函数的参数指针作为函数的参数3、指针和数组、指针和数组-指针运算,指向数组的指针指针运算,指向数组的指针4、指针与字符串、指针与字符串-用指针处理字符串用指针处理字符串5、数组、指针作为函数的参数、数组、指针作为函数的参数1、数组元素作为参数;、数组元素作
14、为参数;2、数组名作为参数、数组名作为参数3、指针变量与数组名作为参数、指针变量与数组名作为参数6、指针与函数、指针与函数1、返回指针的函数;、返回指针的函数;2、指向函数的指针、指向函数的指针7、指针数组、指针数组-指针变量的数组指针变量的数组42427 7、指针数组指针数组42格式:格式:类型标识符类型标识符 *数组名数组名 常量表达式常量表达式;43432.指针数组的初始化指针数组的初始化指针数组的初始化就是在定义指针数组时给指针数组的初始化就是在定义指针数组时给其数组元素赋值;其数组元素赋值;例:例:char*p =Hello,Why,Thanks;指针数组的初值必须是地址;指针数组的初值必须是地址;注意!注意!434444P0P1P2Hello0Why0Thank0s图示:图示:44444545例:例:将将1010个学生的姓名按从小到大的个学生的姓名按从小到大的顺序输出。顺序输出。454646子函数子函数主函数主函数474748484949