首页 > 代码库 > 第七章:函数

第七章:函数

1:形参:是一个变量,它作用域在于本函数,实参:是一个表达式,它是给形参初始化的

2:对于需要改变实参内容时,c++偏向于使用引用,即给其取别名;在调用时初始化。

3:引用变量,定义时必须初始化,但是对于是形参时,应该理解成,在调用时才进行初始化的,故而没有定义时就确定;类似的还有常量形参。

4:const形参是比非const形参要灵活的,因为非const形参函数不能调用const实参,以及字面值

5:数组不能成为函数形参,因为数组不支持复制,而且数组名自动转为指针,函数有其形参形式;实质是不能传递数组的。

6:注意,对于数组3形式中的长度限制,其实没有意义,因为编译器是不会检查数组长度的。

7:这里就得注意了,数组传参时,由于它的名字自动转为指针,所以实质就是传递指针,----这是对于非引用类型时

8:对于引用时,数组不会编译成指针了,而是数组本身的引用。这时形参的数组大小必须与实参数组大小一致,不能是不确定,形式如下int (&arr)[n]。

9:对于省略符形参,利用va_list类型和va_start、va_arg、va_end;用va_list表示栈,va_start获取第一个参数,出栈第一个;接着用va_arg不断获取栈内数据,获取完后,用va_end表示获取完毕;对于va_arg第一个参数是栈,第二个是获取数的类型;对于va_start第一个参数是栈,第二个是函数的第一个形参用来获取实参;va_end只有一个参数是栈。

10:注意,调用省略符号的函数时第一个参数不应该是引用形式参数。

11:main的成功与否,想独立与机器,则用头文件中的cstdlib中的EXIT_FAILURE和EXIT_SUCCESS。

12:返回值不是引用时,是返回值复制给临时对象,可以有局部变量;若是引用则不是复制值,不能是局部变量;临时对象出现在函数调用处。

13:引用返回值是左值,理解为函数调用处是构造了一个临时对象,而该对象是某个值的引用,相当于一个引用变量,故而可以被赋值;而若不是引用返回值,则返回只是个临时对象,则过了此句后会自动注销的,故为右值。

14:默认实参,若在声明中指定,则包含该头文件就可以用;但是若在定义中指定,则只是在该文件源中生效,建议放头文件中。

15:内联函数定义放在头文件中,可以多次定义,但是同文件源中只有一次。

16:函数指针中,对于直接引用函数名字和在函数名取地址符是等效的,但是在作为某个返回值时,不能自动转为地址了。

第七章:函数