c++ primer学习笔记-2变量与基本类型
2014-11-05 00:28
295 查看
1.引用与指针:
指针与引用都能提供对其他对象的间接访问。具体细节上,两者有很大不同。最重要的是引用本身并非是一个对象,只是一个存在的对象所起的另外一个名字。一旦定义了引用,就无法令其再绑定到另外的对象,之后每次的引用都是访问它最初绑定的对象。
引用必须&开天,引用类型的初始值必须是一个对象。
指针本身是一个对象,允许赋值与拷贝,如果指针指向了一个对象,则必须使用解地址符*。给指针赋值相当于给指针存放一个新的地址,从而指向一个新的对象。
面对一个比较复杂的指针或者引用的声明语句时,从左向右阅读有助于理解。
例如:int *&i=p;//从右往左,得到i是一个引用。*(&i)表示i引用的是一个指针。最后得到i引用的是一个int型指针。
2.const限定符
const对象一旦创建之后其值就不能改变,所以const对象必须初始化。同时const对象仅在文件内有效。如果想在多个文件中共享const对象,必须在变量定义之前添加extern 关键字。
3.const的引用(常量引用)
区别于普通引用,对常量的引用不能被用作修改它所绑定的对象。允许常量引用绑定非常量的对象,字面值,或者表达式。
4.指针与const
指向常量的指针:不能用于改变其所指对象的值,要想存放常量对象的地址,只能使用指向常量的指针。
常量指针必须初始化,一旦初始化完成,它的值不变。
5.顶层const 与 底层const
顶层const表示指针本身是个常量。(可表示任意的对象是常量)
底层const表示指针所指的对象是一个常量。(与指针和引用等复合类型的基本数据部分有关)
6.typedef 关键字
使用typedef double wages;//wages 是double的同义词
7.auto类型说明符
让编译器自动分析表达式所属的类型。
作用:选择并返回操作数的数据类型。编译器分析表达式,并得到它的类型,却不实际计算表达式的值。
decltype((variable))结果永远是引用,decltype(variable)只有当variable是引用时,才是引用。
decltype使用的是不加括号的变量,则得到的结果是该变量的类型,若给变量加上一层或者多层括号,编译器就把它当成一个表达式。
指针与引用都能提供对其他对象的间接访问。具体细节上,两者有很大不同。最重要的是引用本身并非是一个对象,只是一个存在的对象所起的另外一个名字。一旦定义了引用,就无法令其再绑定到另外的对象,之后每次的引用都是访问它最初绑定的对象。
引用必须&开天,引用类型的初始值必须是一个对象。
指针本身是一个对象,允许赋值与拷贝,如果指针指向了一个对象,则必须使用解地址符*。给指针赋值相当于给指针存放一个新的地址,从而指向一个新的对象。
<pre name="code" class="cpp"><span style="font-size:14px;">//引用 int i=1; int &j=i;//(j指向了i,j是i的另外一个名字)(必须初始化) //指针 int i; int *j=&i; int *k=j;//正确,初始值是指向int型的指针 //指向指针的指针 int i=1024; int *j=&i; int **k=&j;//k指向一个int型的指针的指针。**表示指针的指针 //指向指针的引用 int i=42; int *p; int *&r=p;//r是对指针p的引用 r=&i;//r引用了一个指针,给r赋值&i,就相当于令p指向i; *r=0;//解引用r得到i,也就是p指向的对象,讲i的值变为0</span>
面对一个比较复杂的指针或者引用的声明语句时,从左向右阅读有助于理解。
例如:int *&i=p;//从右往左,得到i是一个引用。*(&i)表示i引用的是一个指针。最后得到i引用的是一个int型指针。
2.const限定符
const对象一旦创建之后其值就不能改变,所以const对象必须初始化。同时const对象仅在文件内有效。如果想在多个文件中共享const对象,必须在变量定义之前添加extern 关键字。
3.const的引用(常量引用)
区别于普通引用,对常量的引用不能被用作修改它所绑定的对象。允许常量引用绑定非常量的对象,字面值,或者表达式。
4.指针与const
指向常量的指针:不能用于改变其所指对象的值,要想存放常量对象的地址,只能使用指向常量的指针。
常量指针必须初始化,一旦初始化完成,它的值不变。
<span style="font-size:14px;">int i=0; int *const j=&i;//j一直指向i const double pi=3.14159; const double *const pip=π//pip是一个指向常量对象的常量指针 </span>
5.顶层const 与 底层const
顶层const表示指针本身是个常量。(可表示任意的对象是常量)
底层const表示指针所指的对象是一个常量。(与指针和引用等复合类型的基本数据部分有关)
6.typedef 关键字
使用typedef double wages;//wages 是double的同义词
7.auto类型说明符
让编译器自动分析表达式所属的类型。
auto i=0,*p=%i;// auto sz=0,pi=3.14;//错误,类型不一致8.decltype 类型指示符
作用:选择并返回操作数的数据类型。编译器分析表达式,并得到它的类型,却不实际计算表达式的值。
decltype((variable))结果永远是引用,decltype(variable)只有当variable是引用时,才是引用。
decltype使用的是不加括号的变量,则得到的结果是该变量的类型,若给变量加上一层或者多层括号,编译器就把它当成一个表达式。
相关文章推荐
- c++ primer 学习笔记 第二章 变量和基本类型
- 【C++ Primer学习笔记】第2章:变量和基本类型
- C++ Primer 学习笔记_5_变量和基本类型(续2)
- [C++ primer 学习笔记][02]变量和基本类型
- C++ Primer 学习笔记(一)——变量和基本类型
- C++ Primer复习和学习笔记 第二章 变量和基本类型
- 《C++ Primer》学习笔记---第2章 变量和基本类型
- C++ Primer 学习笔记3 a变量和基本类型
- 【C++ Primer学习笔记】第2章 变量和基本类型
- C++ Primer 学习笔记(第二章:变量和基本类型)
- c++ primer 学习笔记 3 变量与基本类型
- C++ Primer 学习笔记4 变量和基本类型 (变量初始化规则、声明和定义)
- C++ Primer 学习笔记_4_变量和基本类型(续1)
- C++ primer 学习笔记(第二章:变量和基本类型)
- 【C++ Primer学习笔记】第2章:变量和基本类型
- C++ Primer学习笔记2-变量与基本类型
- C++ Primer 学习笔记_3_变量和基本类型
- c++ Primer学习笔记之第二章 变量和基本类型
- 【C++ Primer学习笔记】第2章:变量和基本类型
- 《C++ Primer(第5版)》学习笔记:第2章 变量和基本类型