- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 指针 第八章 善于利用指针 地址和指针的概念 变量的指针和指向变量的指针变量 数组与指针 字符串与指针 指向函数的指针 返回指针值的函数 指针数组和指向指针的指针 指针的数据类型和指针运算 //调用函数f,从字符串中删除所有的数字字符。 #include stdio.h #include string.h #include ctype.h void f(char *s) { int i=0; while(s[i]!=\0) { if(isdigit(s[i])) strcpy(s+i,s+i+1); else i++; } } void main() { char str[80]; gets(str); f(str); puts(str); } 指向函数的指针变量 程序只有装入内存才能运行。在内存中也要给函数分配一个入口地址, 因此通过定义一个指向该函数的指针, 即可引用该函数。 指向函数的指针变量的定义形式为: 数据类型 (*指针变量名)(函数参数表列 ); 用函数指针变量调用函数 指向函数的指针赋值后,即可引用,其一般格式为: (*指针变量名)(函数实参表); 例如,求两个数的最大值: int a,b,(*p)(int,int),max(int,int),res; p=max; /* 不能写成 p=max(a,b); */ ……. res=(*p)(a,b); /* 与 res=max(a,b); 等价 */ void process(int x,int y,int (*fun)(int,int),char *s) { int res; res=(*fun)(x,y); printf(“ %s %d\n”,s,res); } 指向指针的指针 存放指针地址的变量称为“指针的指针”。 定义形式为: 数据类型 **指针变量名; 例如: int x=5, *xp, **xpp; xp = x; xpp = xp; printf(“%d ”,x ); /*直接访问*/ printf(“%d ”,*xp ); /*单级间址访问*/ printf(“%d ”,**xpp ); /*二级间址访问*/ C语言规定,可以说明指向void类型的指针, 即可定义一个通用型的指针, 可以指向任何类型的变量。 将void型指针值赋给另一指针变量时要进行强制类型转换。使之适合于被赋值的变量的类型。 例如:char *p1; void *p2; ··· p1=(char *)p2; 同样可以用(void *)p1 将p1的值转换成void *类型。如:p2=(void *)p1; 也可以将一个函数定义为void *类型,如: void *fun(char ch1,char ch2) 表示函数fun返回的是一个地址,它指向“空类型”,如需要引用此地址,也需要根据情况对之进行类型转换,如对函数调用得到的地址要进行以下转换: p1=(char *)fun(ch1,ch2); 例:将若干字符串按字母顺序(由小到大)输出。 void main( ) { void sort(char *name[],int n); void print(char *name[],int n); char *name[]={ “Follow me”, “BASIC”, “Great Wall”, “FORTRAN”, “computer design” }; int n=5; sort(name,n); print(name,n); } void sort(char *name[],int n) { char *temp; int i,j,k; for(i=0;in-1;i++) {k=i; for(j=i+1;jn;j++) if(strcmp(name[k],name[j])0) k=j; if(k!=i) {temp=name[i]; name[i]=name[k]; name[k]=temp;} } } 指针数组 void print(char *name[],int n) {int i; for(i=0;in;i++) printf
您可能关注的文档
- 第三章纸浆流送设备与流浆箱讲义.ppt
- 翠轩项目_策划营销思路梳理(第一部分)概要.ppt
- 第一章认识市场-认识营销讲义.ppt
- 第一章认识市场营销讲义.ppt
- 第2板块-人地关系的基本理论-地理-新课标讲义.ppt
- 第2册八一钢铁南疆高炉主体投资概算及财务分析讲义.doc
- 第2次(标准格式输出函数)讲义.ppt
- 第8章库存管理与MRP原理讲义.ppt
- 装修管理服务协议讲述.doc
- 第2次课-第2章电力系统各元件参数及模型讲义.ppt
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)