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

c++ primer学习笔记-2变量与基本类型

2014-11-05 00:28 295 查看
1.引用与指针:

指针与引用都能提供对其他对象的间接访问。具体细节上,两者有很大不同。最重要的是引用本身并非是一个对象,只是一个存在的对象所起的另外一个名字。一旦定义了引用,就无法令其再绑定到另外的对象,之后每次的引用都是访问它最初绑定的对象。

引用必须&开天,引用类型的初始值必须是一个对象。

指针本身是一个对象,允许赋值与拷贝,如果指针指向了一个对象,则必须使用解地址符*。给指针赋值相当于给指针存放一个新的地址,从而指向一个新的对象。

<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使用的是不加括号的变量,则得到的结果是该变量的类型,若给变量加上一层或者多层括号,编译器就把它当成一个表达式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: