第2章 变量和基本类型 附3---底层const和顶层const

和英文版的对:

As we’ve seen, a pointer is an object that can point to a different object. As a result,
we can talk independently about whether a pointer is const and whether the objects
to which it can point are const. We use the term top-level const to indicate that the
pointer itself is a const. When a pointer can point to a const object, we refer to
that const as a low-level const.

-----------------------------------------------------------------

英文中说的很明显:顶层const(top-level-const)-----指针本身是一个常量; 底层const(low-level const)指针所指的对象是一个常量。

 1 const限定符与指针
 2         const int * p;         //const在*左边,表示*p为常量,不可更改(经由*p不能更改指针所指向的内容)
 3                      //但指针p还是变量,想怎么变都可以。这就是所谓的底层const
 4         举例:
 5         int b = 22;
 6         const int * p;
 7         p = &b;
 8         //* p = 200;        //Error *p是常量,不能再对常量赋值
 9
10
11         int * const p = &b;//在声明的同时必须初始化,const在*的右边,表示p为常量,p所指向的地址
12                           //是不可更改的,所以当把b的地址赋值给它时,会报错。这也就是所谓的顶层const
13         举例:
14         int b = 33;
15         int c = 22;
16         int * const p = &b;//在声明的同时必须初始化,const在*的右边,表示p为常量,p所指向的地址
17                           //是不可更改的,所以当把b的地址赋值给它时,会报错
18         //p = &c;        //Error p为常量,顶层const
19
20
21         const int *const p;//这个就相当于以上两种情况的混合体,p是常量,
22                           //所以不能把test2的地址赋给p;同时*p也是常量,所以*p的内容不可更改;
23         举例:
24         int test1 = 10;
25         int test2 = 20;
26         const int * const p = &test1;
27         p = &test2;        //Error,p是常量,所以不能把test2的地址赋给p;
28         *p = 30;        //Error,*p是常量,所以*p的内容不可更改;
时间: 2024-08-24 12:57:08

第2章 变量和基本类型 附3---底层const和顶层const的相关文章

第2章 变量和基本类型 附2 --声明和定义的区别

变量声明和定义的区别 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益) 变量的声明有两种情况: 1.一种是需要建立存储空间的.例如:int a 在声明的时候就已经建立了存储空间.----定义 2.另一种是不需要建立存储空间的. 例如:extern int a 其中变量a是在别的文件中定义的.-----声明 前者是“定义性声明(defining declara

第2章 变量和基本类型 附1---变量和对象的区别

在C++ primer里讲到:    对象(object)是一块能存储数据并具有某种类型的内存空间. 已命名的对象-----称为变量(variable). ------------------------------------------------------------------------------------------------------- 对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着一块内存,但是从不同的角度去理解内存就会产生不同的意义. 变量:所谓变量就

C++ Primer学习总结 第1-2章 变量和基本类型

第1-2章 变量和基本类型 1.下面这个语句在C++98和C++11中的输出结果不同. C++98结果: (如果想要更高的精度,可以用%.9lf,输出9位有效数字) C++11结果: 结论: printf的%lf在C++11中表示longdouble,所以用中%f就可以输出float和double类型.而printf在C++98中可以用%lf正确输出double. 如果是scanf的话,不论C++98还是C++11中float都用%f读取,double都用%lf读取,因为二者结构不同.   2.

C++ Primer 笔记(2)第二章 变量与基本类型

第二章 变量与基本类型 1.基本内置类型包括算术类型和空类型,算术类型分为两类:整型(包括字符和布尔类型)和浮点型: 2.布尔类型(bool)的取值是真(true)或者假(false): 3.字面值常量:每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型, 由单引号括起来的一个字符是char型字面值,有双引号括起来的零个或者多个字符则构成字符串字面值: 20  整形字面值 ‘a’ 字符字面值 “Hello World”或者“”都会字符串字面值 ‘A’表示单独字符A,而“A”

<<C++ Primer>> 第 2 章 变量和基本类型 术语表

术语表 第 2 章 变量和基本类型 地址(address): 是一个数字,根据它可以找到内存中的一个字节 ?? 别名生命(alias declaration): 为另一种类型定义一个同义词:使用 "名字 = 类型" 的格式将名字作为该类型的同义词. ?? 算术类型(arithmetic type): 布尔值,字符,整数,浮点数等内置类型. ?? 数组(array): 是一种数据结果,存放着一组未命名的对象,可以通过索引来访问这些对象. ?? auto: 是一种类型说明符,通过变量的初始

第2章 变量和基本类型

2015-10-08 20:18:32 注:  之前解除过C++比较少,只学过C语言. ----------------------------------------------------------- 内置类型是编程语言自己定义的一些类型,不需要我们自己定义了. 比如bool.int: 空类型Void  不对应具体的值,仅用于特殊的场合,例如最常见的是,当函数不反悔任何值时使用空类型作为返回值. 使用浮点数时,选用double---因为float的精度不够,且计算的时候,双精度和单精度的代

第二章 变量和基本类型(2)

2.1 基本内置类型(略过,没什么可写的,都是一些基本的东西) 2.2 字面值常量 5.字符串字面值 1.之前的字面值都是基本的内置类型 2.字符串字面值,是用双引号括起来的0个和多个字符表示,""或者"hello word" 3.为了兼容C语言,C++中所有的字符串字面值都有编译器g++自动在末尾添加一个空字符. 4.字符字面值'A',表示的是单个字符A 5.字符串字面值"A",表示的是字母A和空字符,2个字符的字符串 2.3 变量 关键概念:

[C++ primer]第2章 变量和基本类型

*谨做个人笔记,本系列不建议初学者以系统性学习为目的的使用 C++ 11: 定义了数据类型long long, 至少和一个long一样大,对32位机器而言,一般是64位 即8字节 算术类型 字符型不同于其他基本类型,被分成三种,char,signed char以及unsigned char 但是表现形式只有两种:带符号或者无符号的.类型char会变现为两种之一,具体哪种取决与编译器 所以在算术表达式中不建议使用char,因为不同编译器的结果不同 类型转换 浮点赋整型,只保留整数部分,不是四舍五入

C++primer第二章 变量和基本类型

类型是程序的基础.类型告诉我们数据代表什么意思以及可以对数据执行那些操作. C++语言定义的几种类型: 字符型 整型 浮点型 还支持自定义数据类型 数据类型确定了数据和操作在程序中的意义 i=i+j; int:5=2+3: string:hello world = hello + world: 2.1.基本内置类型 计算:整型或者浮点型 用来存储数值 语句说明:字符串或者string类型 存储语句 判断条件:bool类型 存储真值 2.1.2. 整型 整数.字符和布尔值的算术类型合成为整型.与浮