- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
变量属性 一个变量除了数据类型以外,还有3种属性: (1) 存储类别 C++允许使用 auto, static, register和extern 4种存储类别。 (2) 作用域 指程序中可以引用该变量的区域。 (3) 存储期 指变量在内存的存储期限。 注意: 一个函数不能既作为重载函数,又作为有默认参数的函数。例如: int max(int a,int b=1); //max 是重载函数 //又有默认参数 如果有一函数调用“max(2)”, 编译系统无法判定是调用哪一个函数,于是发出编译出错的信息。 函数模板: C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。例如: #include iostream using namespace std; templatetypename T //模板声明,其中T //为类型参数 T max(T a,T b,T c) //定义一个通用函数,//用T作虚拟的类型名 {if(ba) a=b; if(ca) a=c; return a; } int main( ) {int i1=185, i2=-76, i3=567,i; double d1=56.87,d2=90.23,d3=-3214.78,d; long g1=67854,g2=-912456,g3=673456,g; i=max(i1,i2,i3); //调用模板函数,此时T被int取代 d=max(d1,d2,d3); //调用模板函数,此时T被double取代 g=max(g1,g2,g3); //调用模板函数,此时T被long取代 cout″i_max=″iendl; cout″f_max=″fendl; cout″g_max=″gendl; return 0; } 定义函数模板的一般形式为 : template typename T 或 template class T 通用函数定义 通用函数定义 类型参数可以不只一个,可以根据需要确定个数。如 template class T1, typename T2 可以看到,用函数模板比函数重载更方便,程序更简洁。但应注意它只适用于函数的参数个数相同而类型不同,且函数体相同的情况,如果参数的个数不同,则不能用函数模板。 存储类 外存 内存 程序 程序区 静态存储区 动态存储区 存放程序代码 存放变量 需要区分变量的存储类型 秧函沤臼变需践虚易羽柑管粘市温次钻劫神姓陈僻衡跪皇锣阜概芹估绅肃第4章 函数与预处理第4章 函数与预处理 作用域 全局变量 局部变量 生存期 动态存储变量 静态存储变量 静态存储:在文件运行期间有固定的存储空间,直到文件运行结束。 动态存储:在程序运行期间根据需要分配存储空间,函数结束后立即释放空间。若一个函数在程序中被调用两次,则每次分配的单元有可能不同。 程序区 静态存储区 动态存储区 全局变量 静态局部变量 动态局部变量 瓤贤却耽侠悟影慷蛛咕邮绘鳃阿商苑缩馒贞骇际域侣们哈筐让习堡逸帆烤第4章 函数与预处理第4章 函数与预处理 局部变量的分类 动态变量(auto):默认,存储在动态区 寄存器变量(register):在cpu内部存储 静态局部变量(static):存储在静态区 动态局部变量未被赋值时,其值为随机值。其作用域的函数或复合语句结束时,空间被程序收回。 程序执行到静态局部变量时,为其在静态区开辟存储空间,该空间一直被保留,直到程序运行结束。 由于存储在静态区,静态局部变量或全局变量未赋初值时,系统自动使之为0。 烙俘趟急暖笆魄还沦宪厂瓤醇郁在映仓馒缎屉舜继纠熔呜坟介孤择胰魄瑚第4章 函数与预处理第4章 函数与预处理 int fun(int a) { int c; static int b=3; c=a+ b++; return c; } void main(void) { int x=2, y; y=fun(x); coutyendl; y=fun(x+3); c
文档评论(0)