- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C-Function-4
C++语言 函数 函数声明、函数定义和函数调用 参数 —— 可空,也可变长;参数可以是基本类型、指针、引用、结构等。但不能为数组本身(实际上是数组的地址)。 返回值 —— 可为基本数据类型, void, 结构、指针或引用;不能是数组 参数和返回值如何传递呢? 不同的CPU、编译器可能有所不同。大多是使用寄存器(如X86下的[EDX]: EAX)或内存单元(栈)。 函数原型 为何需要原型? 函数原型是函数定义者和使用者的接口。 原型是函数到编译器的接口。编译器通过原型知道函数需要几个参数,什么样的参数,返回值类型等。C中常见BUG是传递一个普通数据给指针。【例1】 函数声明中的形参名会被忽略。 const 和非const const 与函数 留心看下面的函数声明 char *strcpy char *, const char * ; char *strcpy char *dst, const char *src ; 约定:如果是纯输入指针参数(内容不会被函数修改),则应声明为const。【例2】 const int mons[] 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; int sum int mons[], int n ; int days sum mons, 12 ; 为什么? 参数传递 普通对象参数通过副本传递给函数 大型对象的副本传递成本很大 副本不能完成对象的修改 采用对象的指针/引用可以解决上述问题 如果函数不修改对象,将指针/引用参数const化 函数返回值 返回普通对象 —— 值copy传递 string max const string s1, const string s2 return s1 s2 ?s1:s2; 返回引用 —— 返回对象本身 const string max const string s1, const string s2 return s1 s2 ?s1:s2; 千万不要返回指向局部对象的引用/指针【构造例子测试】 函数返回值 引用返回左值【例3】 char at string s, int idx return s[idx]; int main string s hello c++ ; cout s endl; at s, 0 H; // h -- H cout s endl; return 0; 内联函数 内联函数与宏 内联是 C宏(#define)的另一个“杀手”! 尽可能地抛弃宏【请测试之】 #define max a,b a b ? a : b int a 5, b 0; int x max ++a, b ; // x int y max ++a, b + 10 ; // y inline int max int a, int b return a b ? a : b; 可是宏的优点? c++的泛型 template 函数的缺省参数 函数缺省参数的规则 缺省值参数必须出现在后面。 函数调用时,若某参数省略,则其后参数皆应省略。 函数重载 C++的函数多态,一种形式是默认参数,另一种形式是函数重载(overloading)。 函数重载:一个函数名具有多个实现形式。 函数重载 函数调用时,使用哪个函数?靠什么决定? 参数类型“特征”:重载时特征不能相同! print x ; // 由 x 类型决定 举例: void load int ; void load int, int ; void load double ; void load char * ; void load const char * ; // ??可以么 那么下面的调用使用哪个函数呢? 1 load 1 ; // ? 2 load /*short */sh ; //? 函数重载 下面的函数重载 void load int ; // #1 void load int ; // #2 int ii 10; load ii ; // which one? 不可滥用重载。必要时重载。何时必要? 函数执行基本相同的任务,但使用不同数据。 可重载,也可用默认参数解决的时候,选择哪个? C++的函数名字装饰,看汇编代码 灵活的局部变量说明 C++中局部变量声明的作用域从其说明点到所在的最小程序段末尾的范围内有效。 for int k 5; k 0; k-- //程序代码段; //在这里,变量k只在for循环域中有效。 // 到此为止 本章小结 新注释。 新的I/O流。 引用 new和delete co
您可能关注的文档
- 74hc573完整中文资料.doc
- 7812中文资料.doc
- 7B a surprise birthday party.doc
- 7A下复习综合测试及答案 2.doc
- 7B复习资料.doc
- 7B词汇表.doc
- 7MFC的DLL.doc
- 737NG放水程序.ppt
- 400M核磁操作方法.ppt
- 7下.Grammar focus 语法焦点 翻译.doc
- 高中英语“读-写-译”句式集萃教案.pdf
- 小学作文教学方法一(如何写人).pdf
- “学写连续观察日记”教学设计及设计意图.pdf
- 护理研究--护理论文书写格式、要求等课件.pdf
- 怎样写新闻消息.pdf
- 2025年乡镇民主生活会讲话提纲+民主生活会前专题学习体会发言稿.docx
- 2025年领导班子民主生活会会后综合情况报告+妇联上年度民主生活会整改落实情况的报告.docx
- 2025年局长、党员、组织部干部科科长围绕带头严守政治纪律和政治规矩,维护党的团结统一方面;带头增强党性、严守纪律、砥砺作风方面四个带头组织生活会个人对照.docx
- 2025r年3月组织生活会个人对照剖析(围绕带头严守政治纪律和政治规矩,维护党的团结统一方面;带头增强党性、严守纪律、砥砺作风方面;带头在遵规守纪、清正廉洁前提下勇于担责、敢于创新方面;带头履行全面从严治党政治责任四个带头方面存在问题、问题分析及整改措施).docx
- 集团党委书记参加所在支部组织生活会上的讲话提纲+乡镇2024年民主生活会讲话提纲.docx
最近下载
- 2024-2025学年初中信息技术(信息科技)八年级上册清华大学版(2012)教学设计合集.docx
- [化工原料标准]HGT4205-2011工业氧化钙.pdf
- 西方服装史第七章.ppt VIP
- 地理信息系统原理试卷及答案汇总.pdf VIP
- 职业技能等级认定理论考核内部质量督导情况记录表.docx VIP
- 高低压供配电施工技术交底.docx
- AQ 6111-2023 个体防护装备安全管理规范.pdf
- 史上最全博易大师指标公式编写教程、指标函数大全、指标代码大全知识分享.pdf
- 广东省广州市第二中学初中升高中-学校自主招生选拔考试-物理试题.pdf VIP
- AI时代生存手册:零基础掌握DeepSeek (秋叶;任泽岩;黄震炜) .pdf VIP
文档评论(0)