C++的学习笔记(第五章:函数)

目录

函数的概述

函数的定义

函数的调用

关于程序运行的两大基本方针之一(可见性,作用域,存在的时间)的理解。【友情提示,另外一个是硬件端的处理过程,比如变量的储存类型,函数调用的机制参数传递的机制······】

进一步解释结构化程序设计的理念

几类比较特殊,但是很常用的函数的整理:递归函数,内联函数,重载函数,带默认值的函数,


正文:

函数的概述:函数是具有一定功能的又经常使用的独立的代码段。

                     函数由接口和函数体组成,函数的接口包括函数名和函数类型,和形式参数表;而函数体用于实现算法。

                    函数分为自定义函数和库函数(需要加标准的库文件,对了,顺便提一下using namespace std与库文件的区别,前者包含关键字的定义,后者包含的是库函数的定义)。

函数的定义:定义函数 如果定义类型与返回类型不匹配,则自动转化。

                                     如果没有说明返回的类型,则自动定义为int型。

                     函数原型

                     return语句

函数的调用:1.调用的方式有三种:函数的语句(有返回值也可以用),函数的表达式(必须返回一个值),函数的参数(比如max(a,b,,max(c,d,e)))。

函数运行的方针之一:A:作用域:块作用域:标识符从定义开始有作用的区域

                                                        函数作用域

                                                        类作用域

                                    可见性:内层大于外层  ::(注意作用域运算符用一次就好,最好不要用,这种东西,用了就是找麻烦)

                                    生存周期:自己根据变量的储存的位置来看。按生存期可以将变量分为两种静态的变量和动态的变量

                                                      C++中使用的变量的储存类型有4种:auto,register,extern和statac

                                                                                                                 其中auto变量的储存于栈区,而且我们一般可以将aito省略。而register变量存储在cpu的寄存器里面。而 不是存放在内存里面,但是,寄存器这玩意有限,如果超出范围,则自动转化为auto变量。extern变量如果在一个文件中定义了某个变量,那么,如果想要在其它的文件中使用的话,必须加上extern来说明。最后一个,static,如果加上的话,则该变量为静态变量。静态变量又分为全局或者局部变量,如果局部的静态变量一开始没有被初始话,那么自动赋值为0,每一次调用局部静态变量的话,都可以使得调用上一次的值。而静态全局变量的优势在于安全性更高,不可以被其它的文件所调用,但这也是它的劣势,不能和其它的文件所共享。

{

    补:全局变量和局部变量:储存的几块区域:代码区;数据区:堆区(在程序中申请执行的区域),栈区(用于存放局部的变量,先入而后出),全局和静态变量区(当一个变量被命名为全局或者静态变量的时候,就会存放在这个区域,而且会保留直到这个程序执行完毕),常量区(存放字符变量的地方)。            

}

                                     B:函数调用的执行机制:

机构化设计的理念,

几类特殊的函数  :递归函数,这种函数可以调用函数自身,进而实现处理递归问题。

                               内联函数,这种函数一开始就会被执行,只要在前面加一个inline.(需要注意的是:内联函数内部不能包含循环语句,和switch语句;而且内联函数的定义一定要放在调用的前面)好处就是如果利用的得当,我们可以节省,时间和空间的开销。

                                重载的函数:为了方便使用,可以命名几个函数名称一样的函数,他们的形式参数不同,只是因为名称相同而放在一起,这样的话,可以让编译器看、来自动选择。值得注意的三点是:重载函数只以形式参数来区分不同的函数,而不以参数名,或者函数的类型来区分,更不能将不同功能的函数写在一起,这样就会破环了可读性。

                                带默认值的函数:如果不提供参数,则自动以函数的默认值来输入。值得注意的几个点:默认值必须放在非默认值的参数前面。



应用:1,总结几个比较经典的值和地址传递

                 值传递;地址传递(可以传递一堆东西,因为是地址,所以传递过去之后就会给了这一堆数据的一个信息):A:传递一个数组;B:传递一个地址(取地址符)C:传递一个指针。

           2,几个经典的操作

           cin>>a(一个char型的数组名);

           ofstream ofile(可以写数组名/或者写一个地址)

           形参定义了一个数组,实参需要写一个数组名。

          3.递归函数

          内联函数的几个编写要点:第一,内联函数需要从内部来调用内联函数的函数名;第二,内敛函数需要有一个判断的终止条件,并且还要有一个终止后的返回值。

           4.静态变量

            静态变量的重点在于可以重复引用而值会被储存,写程序的时候记得做好以下的几件事情:第一,不要怕被重新定义后,原来的值不存在;第二,需要你灵活的设计主函数里面的条件的判断。

static int bcd=0;
	bcd = a+bcd;
	return bcd;
            5.define的后面不需要加;





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值