(12周)指针(二).ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(12周)指针(二)

例:求a,b中的最小者。 m = (*p)(a,b); m = min(a,b); void main() { int (*p)(int, int); int a,b,m; p = min; scanf(%d,%d,a,b); m = (*p)(a,b); printf(\na = %d,b = %d, min = %d\n,a,b,m); } int min(int x,int y) { int z; z = (xy? x:y); return(z); } * 3.用函数的指针作参数 可以用指向函数的指针变量作为被调用函数的参数; 由于指针变量是指向某一函数的,所以先后使指针指向不同的函数,就可以在被调函数中调用不同的函数。 * 例: 设一个函数 process,在调用它的时候, 每次实现不同的功能。 (1)求a和b之和。 (2)求a,b中大者。 (3)求a,b中小者。 分析: 函数名作实在参数; process的形参中,定义一个指向函数的指针。 * 主程序: void main() {int add(int,int),max(int,int), min(int,int); void process(int,int, int (*)(int,int)) ; int a,b; printf(please input a and b:\n); scanf(%d%d, a,b); printf(sum = ); process(a,b,add); printf(max = ); process(a,b,max); printf(min = ); process(a,b,min); } * 子程序: void process(int x,int y, int (*fun)()) { int result; result = (*fun)(x,y); printf(%d\n, result); } * add(int x, int y) { int z; z = x+y; return(z); } max(int x, int y) { int z; if (xy) z = x; else z = y; return(z); } * min(int x, int y) { int z; if(xy) z = x; else x = y; return(z); } * 说明 用指向函数的指针作函数参数的优越性在于能在调用一个函数过程中执行所指定的函数,从而增加处理问题的灵活性。 在处理不同函数时,process函数本身并未改变,而只是改变了调用它的实参。如果将另一个函数传给process,只需改变一个实参值即可。 * 第六节 指针数组 * 指针数组 一、指针数组的定义 二、指针数组的初始化 三、指针变量 * 1. 指针数组的定义 格式: 类型标识符 *数组名[常量表达式] 例: int *a[4]; 定义了一个有4个元素的一维数组; 数组的每个分量都是一个指向整型的指针; int *a[4]; 等同于 int *(a[4]); * 指针数组的定义 注意: [ ] 的运算优先级高于 *,如果写成 int (*a)[4]; 定义了一个行指针变量 a,指向有 4 个元素的一维数组。 * 2. 指针数组的初始化 指针数组的初始化就是在定义指针数组时给其数组元素赋值; 例: char *p[ ] = {Hello, Why,Thanks}; 指针数组的初值必须是地址; 注意! * P[0] P[1] P[2] H e l l o \0 W h y \0 T h a n k \0 s 图示: * 例:将若干字符串按字母顺序输出。 #includestdio.h #include string.h void main() { void sort(char *name[] , int n); void print(char *name[] ,int n); char *name[ ]={BASIC,FORTRAN,PASCAL,COBOL}; int n = 4; sort ( name , n ); print ( name , n ); } * void print(char *name[] ,int n) { int i; for( i = 0 ; i n ; i++) p

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档