C++ 函数总结(调用+函数+变量)

来源:互联网 发布:银河铁道之夜 知乎 编辑:程序博客网 时间:2024/06/06 18:39
return 语句:无参无返回值,有参有返回值,无参有返回值,有参无返回值。
函数的调用:先明确所调用函数的类型,参数类型,参数的个数,然后确定函数所在的库文件或头文件;明确形参与实参的值传递的过程,以及实参与形参的
     区别 ,其中形参是函数中()的参数,如void max(int a, int b) 实参是函数调用时的参数 max(1,2);数组作为函数的参数,值传递的是数组的首地址。
带默认值的的函数:在()内的默认参数应放在最右边,一旦指定默认值,后面所有的参数都必须是有默认值的,最好在函数的声明处指定默认值,;在不同的源
     文件中可以给函数指定不同的默认值,但在同一个源文件中对每一个参数只能指定一个默认值。
内联函数:定义内联函数时,只需在所定义的函数前加上关键字inline就可以了,使用内联函数前必须注意在调用之前就应该是完整的定义,因此内联函数要放在主函数或调用它的函数之前。内联函数适用于函数体较小有频繁调用的情形,这样可以通过直接复制代码体到调用的函数里面,不需要调用函数时的空间开销,但增加了复制函数代码体的开销,因此不适合于函数体庞大的函数,同时不经常调用的函数也不建议使用内联函数 。
重载函数:函数功能相同,但有不同参数,比如 max(a,b), max(a,b,c);参数相同的函数有不同参数类型,比如int max(int,int),double max(double,double)或两者兼而有之的函数,在使用重载函数的时候,必须注意定义的太少会出现模棱两可的情况,使编译器很难识别应该用重载函数的哪一种形式。  
函数模板: 函数模板是实现类型的参数化,把某些形参设计成可变的参数,成为模板参数,用实际参数代替函数模板中的模板参数,生成不同的模板函数
      模板函数实现: template <class T>   T max(T a, T b)  { return a > b ? a: b;}                                                   
变量的作用域:局部变量是在函数内部定义的变量,包括形式参数,在主函数中定义的时候也是局部变量,只能在主函数中调用;全局变量是在函数的所有的定义之处,全局变量一般在函数体外定义,所有的函数都可以调用。
变量的存储类别:自动变量(auto),静态变量(static), 寄存器变量(register),外部变量(extern);
完整的变量定义格式:存储类别   数据类型    变量名表。  
自动变量:只允许在函数内部中定义的变量,在函数外不允许使用自动变量,自动变量存储在动态的存储空间里,采用堆栈机制来存储。  
静态变量:静态变量与自动变量的本质区别是,静态变量并不像自动变量那样使用堆栈机制来使用内存。而是为静态变量分配固定的内存,在程序运行的整个过程中,它都会被保持,而不会不销毁。在函数外面定义的变量为全局变量,工程内的所有文件都可以访问他,但是它在整个工程内只能定义一次,不能有重复的定义,不然就会发生错误,而其他的文件要想使用这个变量,必须用extern来声明这个变量,这个声明叫做引用声明,静态变量在函数内部定义,则它的作用域就是在这个函数内部,仅在这个函数内部使用它才有效。  
寄存器变量:直接把变量存储在内存的寄存器中,避免每次频繁的从内存外的位置调用这个变量,从而提高存取的效率,只有局部自动变量或形式参数才能定义为寄存器变量,全局变量和静态的局部变量是不能定义为寄存器变量的。
外部变量:外部变量一定是全局变量,引用之前,应该对该变量进行extern的声明,如果全局变量定义前面加上了static,那么函数只能在本院文件中的函数调用,而不能呗当作外部变量来调用。
递归函数:主要解决有规律的循环问题,在递归时,函数会调用函数的本身,然后迭代出最终的结果