您好!欢迎来到源码码网

C++ Primer Plus 随记7

  • 源码教程
  • 来源:源码码网
  • 编辑:admin
  • 时间:2020-05-13 16:29
  • 阅读:674

1.在包含自己的头文件时,应用“ ”而不是< >,如“coordin.h”;  文件名在“ ”中,编译器将先在当前工作目录或源代码目录中查找。


  <iostream>, < >表示C++编译器将在存储标准头文件的主机系统的文件系统中查找。


2. 同一个文件中只能将同一个头文件包含1次


  #ifndef  COORDIN_H_


 #define COORDIN_H_


....


#endif


3、自动存储持续性:(自动变量)在函数定义中声明的变量(包含函数参数)的存储持续性为自动的,它们在程序开始执行其所属的函数或代码块时被创建,执行完函数或代码块时,它们使用的内存被释放。自动变量它们占的内存称为栈,内存释放后,值没有被删除,但不在被标记,栈顶恢复到原来的位置。(代码块是指花括号{ }内包含的语句)


静态存储持续性:(静态变量)在函数定义外定义的变量和使用关键字static定义的变量的存储持续性为静态的,在程序的整个运行过程中都存在。编译器将分配固定的内存来存储静态变量。


动态存储持续性:(动态变量)用new运算符分配的内存一直都在,直到用delete运算符将其释放或程序结束,这种存储持续性为动态的,有时称为自由存储或堆。


4、C++变量的作用域有多种,


  C++函数的作用域可以是整个类或整个名词空间(包括全局),但不能是局部(不能再代码块内定义函数)。


5. int main()


{


int  tel;  ...... //tel #1


{ int  tel;.....  } //tel #2,  在这可{ }代码块中tel #1被隐藏不可见,执行完该代码块后tel #1重新可见。


}


6. 关键字register:建议编译器用CPU寄存器来存储自动变量。


7.静态持续变量的3种链接性 


int global=1000;  //global在代码块外声明,有外部链接性,程序的其他文件可使用global;


  static int one_file=50l; //one_file在代码块外声明,并用static限定符,有内部链接性,只能在包含上述代码的文件中使用one_file


int main() { ...}


void fun1 (int n){


static int count=0;   //count在代码块内声明,并用static限定符,无链接性


int lama=0; //静态变量count和自动变量类似,只能在fun1 ()函数中使用。不同的是即使fun1 ()函数没有执行count也占内存


}


void fun2 (int q){ ....}


8.未被初始化的静态变量的所有位都被设置为0;


静态变量的初始化分为:静态初始化 和动态初始化。静态初始化(零初始化和常量表达式初始化)


静态初始化:编译后初始化 const double pi=4.0*atan(1.0); 


9. 链接性为外部的变量称为外部变量。外部变量可以被程序中的多个文件使用,但每个使用外部变量的文件都要声明;但变量只能定义1次。因此有C++的两种声明:


定义声明:(定义)给变量分配存储空间


引用声明:(声明)不分配存储空间,使用关键字extern,不初始化,如果初始化了变为定义,分配存储空间


extern int blem;  //声明,blem在其他地方定义


extern char gr='z'; // 定义gr,分配存储空间    double up; //定义up


10. 用const全局变量链接性为内部的。但可以用extern关键字来覆盖默认的内部链接性。


extern const int state=34; //有外部链接性


11.所有函数的存储持续性都是静态的,默认情况下,函数的链接性都是外部的。可以用extern(也可不用)指出函数在另一个文件中定义,还可以用static将函数链接性设置为内部,使之只能在一个文件中使用。


12. 使用new初始化: int * ar=new int[4] {2,6,7,3} ;


 用new和new[] 调用函数:


void * operator new(std::size_t) ; //size_t是一个typedef,对应于合适的整型。 释放函数:void operator delete(void *)


void * operator new[] (std::size_t) ; 释放函数:void operator delete [] (void *)


定位new运算符:


char buffer[500];


p1=new (buffer) int[20] ;// 将Int数组放置在buffer。


此时不需要delete [] p1; 因为buffer处于delte管辖之外。


13.创建名称空间的关键词 namespace, 任何名称空间中的名称不会与其他名称空间的名称冲突(不同名称空间可以用相同的名称)


namespace Jack{ double pail; void fetch(); int pal; } 


访问名称空间的名称用作用域解析运算符 ::  如Jack::pail=12.34;  包含名称空间的名称Jack::pail称为限定名称


14.using声明使特定的标识符可用: using Jack::fetch;  完成该声明后,在有效区域可用fetch代替Jack::fetch


using编译指令使整个名称空间可用:using namespace Jack;名称空间所有名称都可用,不用作用域解析运算符 :: 


15.未命名的名称空间可替代链接性为内部的静态变量:


函数外声明:static int counts;


可写为函数外声明 : namespace     { int counts; }


16.一个文件中调用average(3,6)函数,返回两个int参数的int平均值,在同一个程序的另一个文件中调用,它返回返回两个int参数的double平均值,实现方法:


在每个文件中包含单独的静态函数定义,或每个文件在未命名的名称空间(上面的15)中定义一个合适的average()函数


   

————————————————


原文链接:https://blog.csdn.net/lvliang2017232003/java/article/details/85990362


特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;
全部评论(0)
推荐阅读
  • 陀螺匠OA办公系统源码 PHP + Vue 前后端分离 完整可商用
  • 陀螺匠OA办公系统源码 PHP + Vue 前后端分离 完整可商用
  • 项目介绍《陀螺匠》是一套采用Laravel9框架结合Swoole高性能框架与Vue.js前端技术栈构建的AI+低代码双引擎智能办公系统。陀螺匠深度融合了AI智能体以及低代码开发平台,系统简约,易于功能扩展,方便二次开发。旨在为企业提供一站式、数智化转型的全方位解决方案,助力企业高效运营与智能决策。源码说明源码说明:项目代码100%开源,基于AGPL-3.0,支持免费商用!技术栈:系统基于Laravel9+Swoole+Vue.
  • 软件教程
  • 来源:CRMEB
  • 编辑:CRMEB
  • 时间:2026-03-27 15:33
  • 阅读:397
  • open claw最近很火,如何理性看待?
  • open claw最近很火,如何理性看待?
  • openclaw是2026年初科技圈最火爆的现象级话题。它不仅仅是又一个AI产品,更被百川智能的王小川誉为与ChatGPT诞生同等重要的里程碑——标志着AI从”只会说”的对话者,进化到了”能够做”的行动者。对于这股全民”养虾”热潮,我的观察是:它代表了一次人机关系的革命性跃迁,但同时也是一场充满风险与泡沫的狂欢,其真正的价值需要在喧嚣褪去、安全与成本的挑战被克服后才能显现。下
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-17 11:06
  • 阅读:437
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序有什么区别
  • 原生小程序和封装的小程序是两种不同的开发模式,主要区别在于开发方式、性能表现、代码维护以及跨平台能力。为了让你更清晰地理解,我们可以把“原生”比作用钢筋水泥直接盖楼,而“封装”则是用预制板或套件来组装楼。以下是详细的对比分析:1.定义与本质原生小程序:定义: 直接使用微信官方提供的开发工具、语法和API进行开发。语言: 使用微信自己定义的一套技术栈(WXML(微信标记语言)做结构、WXSS(微信样式表)做样式、JS
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-03-06 11:54
  • 阅读:671
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • 基于NetCore(Razor Page)开发的Cms建站系统MIT协议
  • FytSoaCms一款基于NetCore2.2/3.1(RazorPage)功能强大的Cms建站系统,支持前后端分离。简介:模块化:全新的架构和模块化的开发机制,便于灵活扩展和二次开发。模型/栏目/分类信息体系:通过栏目和模型绑定,以及不同的模型类型,不同栏目可以实现差异化的功能,轻松实现诸如资讯、下载、讨论和图片等功能。通过分类信息和栏目绑定,可以自动建立索引表,轻松实现复杂的信息检索。FytSoa是一套基于NetCore+SqlS
  • 开发工具
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 22:21
  • 阅读:599
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • 基于JAVA开发的企业级平台微信公众号管理系统SmartWx
  • SmartWx微信公众号管理系统是一个完整的微信公众号web操作版,直接编译即可运行。让用户不再用关心微信的底层接口,直接使用页面进行操作,简单方便。包括服务器绑定、文本管理、图文管理、菜单管理、粉丝管理、群发消息等。技术框架开发语言:JAVA数据库:MYSQLJAVA开发框架:SpringMVC+Spring+Mybatis缓存框架:j2cache前端开发框架:Layui+JQuery+html前台模板引擎:art-templat
  • 源码教程
  • 来源:gitee
  • 编辑:源码码网
  • 时间:2026-01-24 21:53
  • 阅读:608
联系客服
源码代售 源码咨询 技术开发 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部