您的位置:首页 > 编程语言 > C语言/C++

C++ primer 阅读笔记------------变量

2017-08-01 12:38 225 查看
该博客用于记录自己在阅读过程中不懂的知识点,很少用到但比较重要的知识点以及模棱两可的知识点
extern int j;  //声明 j(未定义)

int j;           //声明并定义

不能在函数体内部初始化一个extern标记的变量

多文件使用同一变量应在一个文件中定义多个文件中声明

不能把int型变量直接赋给指针变量

引用不是变量所以不存在引用的引用

void 型的指针多是用于承载,而不是用于操作,因为我们不清楚他的类型就无法确定如何操作他

**const(对给定类型的修饰!!!)

    编译器在编译过程中便将所有const变量都替换为了对应的值

    默认情况下const便利了仅在文件内有效

    非常量引用不能绑定常量对象

    引用必须被初始化

    不允许通过const类型的引用修改对象

    当初始化常量引用使用表达式时,要求该表达式能转换成引用的类型,如果发生转化,引用绑定的实际上是一个临时量(引用类型和引用对象类型必须一致的其中一个例外,如果引用不是常量引用的话,对引用的赋值事实上操作的是一个临时量,而不是代码中显式绑定的对象, (指针同理))

*指向常量的指针:类型为const double等,仅仅是不能通过指针修改所指对象的值,对象可以是非常量,用于存放常量对象的地址

*常量指针:例:int *const a,必须初始化且初始化后其存放的地址不能变

指针本身是常量称为顶层const(更一般的,任意对象是常量),指向的对象是常量称为底层const(与引用和指针等复合类型的 基本类型部分  有关)

常量表达式:值不会改变并且编译过程就能确定的值

constexpr类型用于方便编译器验证某值是否三常量表达式

    constexpr int a = size();当size()是constexpr类型的函数时成立

使用constexpr的类型必须是字面值类型(算术类型,引用,指针(使用时应初始化为0,nullptr或是存储与固定地址的对象(定义在函数体之外的对象)))

typedef:类型别名

typedef char *pstring;     //pstring 是char类型的指针

const pstring a = 0;      //因为pstring是指针类型,所以a是一个常量指针,不能想当然的理解为const char* a(指向常量的指针),const是对给定类型的修饰!!!

auto让编译器分析表达式类型,必须有初始值

auto a = b + c;

decltype指示符

decltype((i)) 的结果永远是引用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ primer