函数的定义:

(1)函数体是一个作用域,函数体是一个语句块,定义了函数的具体操作

(2)函数的形参类似于局部变量,只是区别是它是在函数的形参列表中定义的。

(3)C++是一种静态强类型语言,对于每一次函数调用,编译时都会检查其实参的类型,必须是与形参相同或者可以转化

参数的传递:

(1)当参数为非引用时,调用时形参复制实参的值

(2)当参数为引用时,调用时形参是实参的别名。

非引用形参:

(3)当形参为const的非引用时,调用时可以传递const实参也可以是非const的实参,只是在函数中不能改变这个局部变量的值

其实为了与C相兼容,这个类型还是被认为是非const了

(4)复制实参的局限性:特别在复制对象时付出时间和空间代价太大。

引用行参:

(5)使用引用形参,函数可以直接访问对象而无需复制,然后使用const引用可以避免修改实参

(6)若是函数具有非const的引用形参,则不能用const的对象来调用(因为const对象时不能修改的),而函数是可以修改传递

进来的对象的。

(7)应该将不修改相应实参的形参定义为const引用,这样const对象也可以调用它了,不然会大大的限制函数的使用(因为非const

引用的形参的函数只能与非const的对象关联在一起)

(8)传递指向指针的引用:void func(int *&v1) 这里从右向左看,v1是一个引用,是一个指向int型对象的指针的引用。即这个

指针的一个别名。当在函数里面改变这个指针变量时,实参的指针变量也会改变。

vector形参:

(9)vector与数组有所不同,一般不应该使用vector的非引用形参,因为这样会复制vector的每一个元素。应该将其采用引用的类型

(10)一般更倾向于采用迭代器来传递指向容器中将要处理的元素。

数组形参:

(11)使用数组名时,数组名会自动转化为指向其第一个元素的指针。

(12)不能复制数组(即在函数调用的时候就算是以数组名作为参数时,会转化为指针)

(13)虽然不能直接传递数组,但是函数的形参可以写成数组的形式:void func(int*)  void func(int[])

void func(int[10])其实这个指定的长度是没啥用的。这三种都是等价于int*指针形参的

数组形参的引用和非引用:

(14)当数组作为形参非引用时,会自动转化为指针,指向数组的第一个元素。形参复制的是这个指针的值,可以通过指针

来对数组元素进行操作。

(15)void func(int(&ary)[10])当将数组作为引用的形参时,编译器不会将数组实参转化为指针,而是传递的数组

引用的本身。这时编译器会检查实参数组长度与形参是否匹配。

多维数组:

(16)编译器会忽略第一维的长度 void func(ary【】【10】)。这里其实形参是一个指针,指向一个包含十个对象的数组

的指针。

man处理命令行选项:

return语句:

(1)当返回引用时,不是返回复制的值,而是返回的对象的引用(即本身),所以千万不要返回局部变量的引用。

(2)不要返回局部对象的指针,因为当函数结束时,局部对象的内存被释放了,返回的指针就变成了一个空悬指针。

7.1——函数的定义,参数传递,return语句的更多相关文章

  1. Python函数基础--def及return语句地操作

    1·def是可执行的代码 Python的函数是有一个新的语句编写的,即def.不像C这样的编译语言,def 实际上是一个可执行的语句--函数并不存在,直到Python运行了def后才存在.在典型的操作 ...

  2. 函数----基础,参数传递,返回类型和return语句

    一.函数基础1.形参和实参 实参是形参的初始值.第一个实参初始化第一个形参,第二个实参初始化第二个形参,以此类推.尽管实参与形参存在对应关系,但是并没有规定实参的求值顺序.编译器能以任意可行的顺序对实 ...

  3. Python快速入门学习笔记(三)——函数的定义与调用

    定义函数 Python中定义函数的格式为: def fun([参数列表]): ... 函数在执行到return语句时结束,并将结果返回.如果没有return语句,函数执行完毕后返回None. 例: d ...

  4. 返回类型和return语句

    return语句终止当前正在执行的函数并将控制权返回到调用该函数的地方.return语句有两种形式: return; return expression; 无返回值函数 没有返回值的return语句只 ...

  5. 关于main函数的定义

     很多人甚至市面上的一些书籍,都使用了void main( ),其实这是错误的.C/C++中从来没有定义过void main( ).C++之父Bjarne Stroustrup在他的主页上的FAQ中明 ...

  6. A Byte of Python 笔记(5)函数:定义、形参、局部变量、默认参数、关键参数

    第7章  函数 函数是重要的程序段.它们允许你给一块语句一个名称,然后你可以在程序的任何地方使用这个名称任意多次地运行这个语句块.这被称为 调用 函数. 定义函数 函数通过 def 关键字定义.def ...

  7. 在函数体的“出口处”,对 return 语句的正确性和效率进行检查

    在函数体的“出口处”,对 return 语句的正确性和效率进行检查. 如果函数有返回值,那么函数的“出口处”是 return 语句. 我们不要轻视 return 语 句.如果 return 语句写得不 ...

  8. 返回类型和 return 语句

    return 语句终止当前正在执行的函数并将控制权返回到调用该函数的地方.return 语句有两种形式: return; return expression; 不要返回局部对象的引用或指针: 函数完成 ...

  9. python函数,定义,参数,返回值

    python中可以将某些具备一定功能的代码写成一个函数,通过函数可以在一定程度上减少代码的冗余,节约书写代码的时间.因为有一些代码实现的功能我们可能会在很多地方用到. 1.函数的声明与定义 通过def ...

  10. php学习笔记-return语句

    一个函数中可以有return语句,也可以没有.什么时候需要呢?就是当你想接收函数的执行结果的时候,你需要一个return 语句. 函数执行完return语句之后,return语句后面的代码是永远不会得 ...

随机推荐

  1. grunt配置详情

    这个grunt配置 是我的一个程序员朋友从网上无意间看到的,然后他亲测了下,恩,是可以的.不过我到目前还未测试过是否可以. 一.安装node, 首先确保电脑已有node的环境.然后 运行  npm i ...

  2. P2142 高精度减法

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...

  3. 如何解决MySQL在高版本需要指明是否进行SSL连接问题

    WARN: Establishing SSL connection without server's identity verification is not recommended. Accordi ...

  4. ios https 安全证书配置

    原定于2017年1月1日起所有提交到 App Store 的App必须强制开启 ATS,需要配置Https.但是现在不需要了,无固定期限的往后延期了,但是这个还是得弄明白下为好,说不定哪天突然就让弄了 ...

  5. HTTP协议 处理流程

    我们平时在浏览网页的时候都是使用浏览器,输入你要的网址后回车,就会显示出我们所想要的内容,看似这个简单的用户操作行为的背后,Web的工作原理是怎样的呢?到底隐藏了些什么呢? 对于传统的上网流程,系统它 ...

  6. mac homebrew安装

    http://book.51cto.com/art/201107/278761.htm 3.2.3 使用 Homebrew 安装 Git Mac OS X 有好几个包管理器,用于管理一些开源软件在 M ...

  7. itop安装中使用nginx安装后不能出现enter itop的问题

    安装中没有出现enter itop,  如下的网络请求给了我们原因 原来使用的是域名请求资源文件,而该域名并不能指向我的服务器,所以安装中资源文件请求不成功,查看了我的nginx配置,如下 [ro ...

  8. python基础一 day3 列表

    字符串是有序的,列表也是有序的,有索引值,可以切片 可以用切片来截取列表中的任何部分返回得到一个新列表. 列表方法: 1:增加 结果: 例子:    结果: int类型不可迭代      结果: 删: ...

  9. jxcel - 好用的Excel与Java对象转换工具

    更多精彩博文,欢迎访问我的个人博客 Jxcel简介 Jxcel是一个支持Java对象与Excel(目前仅xlsx.xls)互相转换的工具包. 项目地址:https://github.com/jptan ...

  10. js 跨域深入理解与解决方法

    参考博客: https://www.cnblogs.com/2050/p/3191744.html