c++第九章
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++第九章,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3900字,纯文字阅读大概需要6分钟。
内容图文
![c++第九章](/upload/InfoBanner/zyjiaocheng/835/d1da3772d99b456eb493d52b15869931.jpg)
目录
将原来的程序分为三部分:头文件、主函数和子函数
/*
01)原来的源程序可以分为三部分:
A 头文件:包含结构声明和使用这写结构的函数的原型
B 源代码文件:包含与结构有关的函数的代码(主函数)
C 源代码文件:包含调用与结构相关的代码(子函数)
02)头文件中常包含的内容:
函数原型(函数声明)、使用#define或const定义的符号常量
结构声明、类声明、模板声明、内联函数
03)在包含头文件时,我们使用"coordin.h",而不是<coordin.h>。
如果头文件包含在尖括号内,则c++编译器将在存储标准头文件的主机系统的文件系统中查找;
如果头文件包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录;如果没有在
那里找到头文件,则将在标准位置查找,因此在包含自己的头文件时候,应该使用双引号而不是尖括号
*/
存储类型、作用域和链接性
01)自动存储:在函数内部定义的常规变量使用自动存储空间,被称为自动变量,这意味着它们在所属的函数被调用时
自动生成,在该函数结束时消亡。自动变量通常存储在栈中,这意味着其中变量依次加入到栈中,而在离开栈时,
将按相反的顺序释放这些变量,这被称为"后进先出(LIFO)",因此在程序执行的过程中,栈将不断的减小或增大。
02)静态存储:是一种在整个程序执行期间都存在的存储方式,使变量称为静态的方式有两种:一种是在函数外满定义
变量,另一种是在声明变量时使用关键字stctic。
03)动态存储:new是delete提供的存储方式。它们管理一个内存池,这在c++这被称为自由存储空间(free store)或
堆(heap),该内存池同用于自动变量和自动变量的内存是分开的。
04)作用域: 描述了名称在文件(翻译单元)的多大范围内课件。例如在函数定义的变量可在该函数中使用,但在
其他函数则不可以;而在函数外面定义的变量则可以在所有函数中使用。
05)链接性: 描述了名称如何在不同单元间共享。链接性为内部的名称只能由一个文件中的函数共享。
自动变量没有连接性,因为它们不能共享。
自动存储持续性
01)在默认情况下,在函数中声明的函数参数和变量的存储持续性为自动,作用域为局部,没有链接性。也就是说
如果mian()函数中声明了一个texas的变量,在子函数oil()中也声明了一个texas变量,则创建两个独立的变量,
只有在定义它们的函数中才可以使用它们。对oil()函数中的texas变量执行的任何操作不会影响main()函数中的
texas变量,反之亦然。例如如下代码块
int main()
{
int teledeli = 5;
//定义代码块
{
int teledeli = 23;
teledeli = teledeli+1;
cout<<"Hello"<<teledeli<<endl; //打印的是24
}
teledeli = teledeli+1;
cout<<"Hello"<<teledeli<<endl; //打印的是6
}
02)寄存器变量: 关键字register最初是由c语言提出的,它建议编译器使用CPU寄存器来存储自动变量,这旨在
提高访问变量的速度。
register int cout_fast; //声明一个寄存器变量
静态持续变量&static的两种用法
01)c++为静态存储持续性变量提供了三种链接性:外部链接性(可在其他文件中访问)、内部链接性(只能在当前文件
中访问)和无连接型(只能在当前函数代码块或子函数中访问)。这三种链接性的变量在整个程序执行期间都存在,
与自动变量相比,他们的寿命更长。由于静态变量的树木在程序运行期间是不变的,故程序不需要使用特殊的装
置(如栈)来存储他们,编译器只需要给他们分配固定的内存块即可。另外,如果没有显式的初始化静态变量,编
译器将把他们设置为0。在默认情况下,静态数组和结构将每个元素或成员的所有位设置为0.
现举例说明如何创建三种链接类型的变量:
...
int global = 1000; //global具有外部链接性,在程序的其他文件只也可以使用
//下面一句中的static表示的是内部链接性,变量是静态持续性
static one_file = 50; //one_file具有内部链接性,只能在包含上述代码的文件中使用它
int main()
{
....
}
void fun1(int n)
{
//此时static表示的是存储持续性
static int count = 0; //count没有链接性,作用域为局部,这意味着只能在fun1只使用它
int llama = 0; //与llama不同的是,即使fun1()函数没有被执行,count也留在内存中
}
02)static的两种用法:
A 用于局部声明(函数内声明变量),以指出变量时无连接型的静态变量时,static标示的是存储持续性;
B 用于代码块外的声明时,static表示的是内部链接性,而变量已经是静态持续性了
内容总结
以上是互联网集市为您收集整理的c++第九章全部内容,希望文章能够帮你解决c++第九章所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。