- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch10_指针
上机作业 指针的故事 “该程序执行了非法操作,即将关闭” 这种错误几乎全是由指针和数组导致的 黑客攻击服务器利用的bug绝大部分都是指针和数组造成的 有些非计算机专业的人,尽量避免使用指针 指针的故事 铁杆C/C++程序员最挚爱的武器:指针 指针造就了C/C++的高效和强大 很多不可能的任务由指针完成 main(){ char*a=main(){char*a=%c%s%c;printf(a,34,a,34);}; printf(a,34,a,34); } 关于指针的原则 学习原则 一定要学会 其实通常的应用很简单 就是一个变量 复杂的应用也不建议使用(KISS) 使用原则 永远要清楚每个指针指向了哪里(where) 永远要清楚指针指向的位置是什么(what) §10.1 指针的概念 §10.1 指针的概念 §10.2 指针变量(p221) §10.4 指针与字符串(p251) §10.5 指针与函数(p260) §10.6 返回指针值的函数(p265) 命令行参数 命令行:在操作系统状态下,为执行某个程序而键入的一行字符 命令行一般形式:命令名 参数1 参数2………参数n 指针类型小结 指针类型小结 函数指针变量赋值:如p=max; 函数返回值的数据类型 专门存放函数入口地址 可指向返回值类型相同的不同函数 指向函数的指针变量 定义形式:数据类型 (*指针变量名)( ); 如 int (*p)( ); /* 比变量指针多两对括号*/ 函数调用形式: c=max(a,b); ? c=(*p)(a,b); ? c=p(a,b); 对函数指针变量作p?n, p++等运算无意义 ( )不能省 int (*p)() 与 int *p()不同 函数指针:函数在编译时被分配的入口地址, 用函数名表示 max …... 指令1 指令2 int max(int x,int y) P可以指向形参 个数不同的函数 未用指针 例12 用函数指针变量调用函数,比较两个数大小 int main() { int max(int ,int); int a,b,c; scanf(%d,%d,a,b); c= max (a,b); printf(a=%d,b=%d,max=%d\n,a,b,c); } int max(int x,int y) { int z; if(xy) z=x; else z=y; return(z); } int (*p)( ); /*定义函数指针*/ p=max; /*给函数指针赋值*/ (*p) 改用指针 何必兜圈子 函数指针常用 于形参! 例13 用函数指针变量作参数,求最大值、最小值及和 int main( ) {int max(int,int), min(int,int),add(int,int); void process(int,int,int (*fun)( )); int a,b; scanf(%d,%d,a,b); process(a,b,max); process(a,b,min); process(a,b,add); } void process(int x,int y,int (*fun) ( )) { int result; result=(*fun)(x,y); printf(%d\n,result); } int max(int x,int y) { printf(“max=”); return(xy?x:y); } int min(int x,int y) { printf(“min=”); return(xy?x:y); } int add(int x,int y) { printf(“sum=”); return(x+y); } 用函数指针变量作函数参数 哇!如此灵活 /*函数声明*/ 例14 编写一个通用函数,用梯形法计算 求f(x)在(a,b)上的积分的方法是: a h b 0 y x f(x) double integral(double (*func)(double), double a, double b) { double h, x = a, s = 0; h = (b - a) / 20; do { s += (func(x) + func(x + h)) * h /2; x += h; } while ( x
您可能关注的文档
最近下载
- 工厂环境保护试题及答案.docx VIP
- 2023-2024学年安徽省马鞍山市第七中学九年级上学期期中考试物理试题.pdf VIP
- 从目的论角度探析动画字幕的翻译.docx VIP
- 好书推荐《朝花夕拾》读书分享名著导读PPT课件.pptx VIP
- 蜜雪冰城的新媒体营销策略分析.pptx
- 10 CR400BF系列动车组途中故障应急处理指导手册.pdf VIP
- 刘德武老师 《可能性》.ppt VIP
- 【全国】2023年4月自学考试05679宪法学真题及参考答案.docx VIP
- 喜疗妥乳膏外涂配合热敷在血液透析患者动静脉内瘘中护理观察.pdf VIP
- 2024-2025学年安徽省马鞍山市七中教育集团九年级上学期期中化学试卷.pdf VIP
文档评论(0)