C++ primer plus chapter 8

头文件内容

原型

#define const 常量

结构声明

类声明

模板声明

内联函数

<>标准头文件库查找

""工作目录和源代码目录 没有则找标准 自己的头文件用引号

 

#ifndef CORDIN_H_

#define CORDIN_H_

 

#endif  其他地方有相同的定义则跳过

 

自动存储 开始函数被创建结束释放

静态存储 整个程序运行过程存在 static

线程存储 并行任务 放在不同线程中处理  如果 thread_local则声明和线程一样长

动态存储 new 一直在 知道delete  又叫做free store heap(堆)

嵌套内同名声明 新的hide旧的  比如main 定义了a  main内部有个wa函数也定义了a 新的a隐藏旧的a

 

register int count_fast  寄存器存储自动变量 提高访问速度   //现在没啥用

 

静态持续变量(没有初始化 值为0 0将被强制转化为合适类型 结构成员也会被初始化0):                                                                                 

外部链接 其他文件可用 函数外直接声明  如 int a =3  常规外部变量有外部连接性 静态外部变量隐藏常规外部变量 

内部  本文件 函数外文件内用static 

无连接  当前函数代码  函数内用static  程序启动时候初始化 以后调用时候不会再次初始化

这三种这个程序都存在  使用固定内存块存储 

 注意的是 const int finger = 10 是内部的   extern const int finger  但是 extern const int finger = 11 就是外部的了(只有一个文件可以初始化哦).......

 

violatile 代码没有对程序修改 值也可能变化

const 内存初始化后不能再修改

 

mutable 即是结构CONST 但是某个成员也可以被修改

 

函数都是静态的 外部链接  你要内部使用则要在定义和原型前加static

单定义规则适用于非内联函数 程序只能包含一个定义 外部链接的话只能有一个程序定义  内联则不受约束 但是C++要求同一个函数内联定义要相同

 

现在程序文件内找 找不到去库里找 所以程序员优先而不是库函数(标准库程序员不能用)

 

spff(double,double)  C里面可能就_spff了 而 C++ 可能用_spff_d_d表示

语言连接性 extern "C" void spiff(int)  用C约定来查找

extern "C++" void spaff(int)  用C++约定  ("C++"可以省略)

 

extern int blem 引用定义 引用已有  

extern int blem = 2  声明定义

函数基本都是外部链接

::提供全局变量 如 ::warming采用全局warming 隐藏局部warming

 

自动内存LIFO 后进先出

动态内存则看怎么用new和delete  (程序结束一般也会被释放 系统很蠢则不会)

还有块是静态变量

 

int *pi = new int(6)    *pi设为6  (C++11 可以用大括号)

double * pd = new double (99.99)  *pd设为99.99

C++11 支持 大括号列表华

struct where {double x; double y; double z;};

where * one = new where {2.5,5.3,7.2}

int * ar = new int[4] {2,4,6,7};

 

int * pa = new int[40]  也可以 new(40 * sizeof(int)); 

delete [ ] pd;

 

定位运算符 

char buff[BUF]

如 pd = new (buffer) double[N]  就会一直用给定的buffer地址

这里不能用delete

 

声明区域 可以在其中声明的区域 函数外的声明区域在所在文件 函数则是代码块

潜在作用域 潜在作用域从声明点开始 到声明区域结尾 被声明区域包含

名称弓箭 提供一个声明区域 一般是全局的

namespace Jack{

double a;

void c();

}

namespace Jill

{float a;

double c;

void c();

}  两个名称空间的函数不冲突 可以在另外个文件提供 void c的代码 

namespace Jill{

void c{

...........

}}

usingJill::a  将a添加到声明区域中 是一个局部变量会覆盖全局

全部导入(using编译) 不会报错 局部会覆盖空间版本   导入指定(声明using) 发生冲突时编译器会报错

可以嵌套

using a::b::c::d;

可以别名 namspace a =std;

如果没有名字只能在当前区域使用 不能用using  namespace {int a,double b;}

加static 内部链接静态存储  

转载于:https://www.cnblogs.com/cyborg/p/10277249.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值