14.函数的声明与定义通过比较可以看出,函数名.返回类型和参数列表是一致的,如果它们不同,将出现编译错误,事实上,唯一的不同在于,函数原型以分号结尾且没有函数体..15.函数原型中的参数名和定义中的参数名可以不一样,而且原型中的参数名没有实际意义,只是为程序员提供一些信息,良好的变成习惯是在原型和定义中使用相同的参数名.16.实参按照声明和定义中的参数排列顺序传递,但不进行名称的匹配.17.函数体总是用大括号括起来,及时只有一条语句.18.变量都有作用域,作用域决定了变量在程序中的存活时间以及在什么地方可以访问它.19.在于巨快中声明的变量的作用域为该语句块,只能在该语句块中访问它,离开该语句块后,它将不复存在,全局变量的作用域为全局,在程序的任何地方都可以使用.20.在函数体内声明的变量被称为局部变量,因为它们只能在函数中存在,当函数返回时,局部变量不再可用,编译器对其进行标记,以便销毁.21.局部变量的定义方法与其他变量相同,传入函数的参数也可以被视为局部变量,可以在函数体内使用它们.22.可以在函数的任何地方定义变量,而不仅限于函数开头,变量的作用域为定义它的语句所在的语句块,也就是说,如果在函数中的一对大括号内定义了一个变量,则改变量只在该语句块中可用.23.传入函数的参数作为函数中的局部变量,修改这些参数不会影响调用函数中的值,这种被称为按值传递,这意味着将在函数中创建每个参数的局部副本.24.在函数外面定义的变量的作用域为全局,在程序的任何函数包括main()函数都可以用.25.与全局变量同名的局部变量不会修改全局变量,但是会隐藏它,如果函数中有一个与全局变量同名的局部变量,则在函数中使用该名称时,指的是局部变量而不是全局变量.26.在c++中,全局变量是合法的,但是人们几乎不实用它,在c语言中,全局变量是一个危险但是必不可少的工具.之所以必不可少, 是因为程序员经常需要让数据对很多函数来说是可用的,而将数据作为参数在函数之间传递非常麻烦,尤其当调用序列中的众多函数接受参数只是为了将其传递给其他函数时.全局变量之所以危险,是因为它们是共享的数据,一个函数可能以另一个函数看不到的方式修改全局变量,这将会导致难以发现的错误.27.对于函数体可包含的局域数量和类型几乎没有任何限制,虽然在函数中不能定义其他函数,但可以调用其他函数,函数甚至可以自己调用自己.28.虽然在c++中,对函数的长度没有限制,但涉及良好的函数通常较短,很多程序员都建议函数长度不超过一屏,这样可以同时看到整个函数.函数越短越容易理解和维护.
29.任何合法的c++表达式都可以用作函数实参,包括常量.数学和逻辑表达式以及返回一个值的函数,重要的是,表达式的结果必须与函数期望的实参类型匹配.甚至可将函数作为参数,毕竟函数将返回一个值,其类型与函数的返回类型相同.但是,将函数作为参数可能是代码难以理解和调试.30.遇到关键字return时,其后面的表达式将作为函数的返回值,并立即返回到调用函数,return后面的所有语句都不会被执行.31.对每个在函数原型中或定义中声明的变量,盗用函数都必须为其传递一个值,传递的值必须是声明的类型,档案函数原型也可以声明参数默认值默认值是在没哟提供参数时使用的一个值,如 int fun(int x = 50) ; 该原型指出函数fun()接受一个int参数,并且返回一个int类型的值,如果没有提供参数,则使用默认值50.由于函数原型可以不包含参数名,因此上面的原型也可以写成这样: int fun(int = 50); 声明默认参数对函数定义没有影响,因此在上述函数的定义中,函数头可以写成 intfun(int x) 如果调用该函数时没有提供参数,编译器将把x设置为默认值50.在原型和函数头中,默认参数的名称可以不同,默认值是根据位置而不是函数名指定的.32.如果函数原型定义如下 int fun(int x1,intx2 ,int x3); 则只有给x3指定默认值之后,才能给x2指定默认值;只有x3和x2都有默认值之后,才能给x1指定默认值.
2012年07月24日 09点07分
11