第二章 变量和基本类型

声明: 本文为《C++ Primer 中文版(第五版)》学习笔记。 原书更为详细,本文仅作学习交流使用。

P30-P71

数据类型是程序的基础。C++语言支持广泛的数据类型。

基本内置类型

算术类型

| 类型 | 最小尺寸 |
| :--- | :--- |
| bool | 未定义 |
| char | 8位 |
| w_char_t | 16位 |
| char16_t | 16位 |
| char32_t | 32位 |
| short | 16位 |
| int | 16位 |
| long | 32位 |
| long long | 64位 |
| float | 6位有效数字 |
| double | 10位有效数字 |
| long double | 10位有效数字 |

类型转换

不要混用符号类型和无符号类型。

变量

变量定义

(1)基本形式:

类型说明符,随后紧跟着一个或者多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。

(2)初始值

在C++中,初始化和赋值是2个完全不同的操作。初始化的含义是创建变量的时候赋予一个初始值,而赋值的含义是把对象的当前值擦除,用一个新值来替代。两者区别很小。

(3)列表初始化

用花括号来初始化变量的方式,称为列表初始化。

(4)默认初始化

如果定义变量没有指定初始值,则变量被默认初始化。

::: tip

例外情况:

定义在函数体内部的内置类型变量将不被初始化,其值未定义。

建议初始化每个内置类型的变量。 :::

变量声明和定义的关系

变量声明:规定了变量的类型和名字。

变量定义:除声明之外,还需要申请存储空间。

如果想声明一个变量,而非定义它,需要使用extern关键词。

extern 

::: tip 变量只能被定义一次,但可以被多次声明。 :::

名字的作用域

作用域:C++中大多数作用域都用花括号分隔。

作用域中一旦声明了某个名字,它所嵌套的所有作用域都能访问该名字。同时,允许在内层作用域中重新定义外层作用域中有的名字。

::: warning 如果函数有可能用到某全局变量,则不宜再定义一个同名的局部变量。 :::

复合类型

定义: 复合类型是基于其他类型定义的类型。

引用

引用:为对象起另外一个名字。

::: warning 引用必须被初始化。 引用本身不是对象,所以不能定义引用的引用。 引用要和绑定的对象严格匹配。 引用类型的初始值,必须是一个对象。 :::

指针

指针:本身就是一个对象。允许对指针赋值和拷贝。指针无须在定义的时候赋值。

(1)利用指针访问对象

如果指针指向了一个对象,则允许使用解引用符(*)来访问该对象。

(2)void* 指针

理解复合类型的声明

(1)指向指针的指针

** 表示指向指针的指针

*** 表示指向指针的指针的指针

(2)指向指针的引用

不能定义指向引用的指针。但指针是对象,所以存在对指针的引用。

const限定符

定义:const用于定义一个变量,它的值不能被改变。const对象必须初始化。

::: tip

默认状态下,const对象仅在文件内有效。当多个文件出现了同名的const变量时,等同于在不同文件中分别定义了独立的变量。

如果想让const变量在文件间共享,则使用extern修饰。

:::

(1)const的引用

允许为一个常量引用绑定非常量的对象、字面值,甚至是个一般表达式。

一般,引用的类型必须与其所引用对象的类型一致,特殊情况是表达式。

(2)指针和const

弄清楚类型,可以从右边往左边阅读。

(3)顶层const

top-level const 表示指针本身是个常量

low-level const表示指针所指的对象是一个常量。

(4)constexpr和常量表达式

C++新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。

处理类型

类型别名

两种方法用于定义类型别名:

(1)使用关键词typedef

typedef 

(2)别名声明

using 

auto类型说明符:让编译器通过初始值来推算变量的类型。

decltype类型指示符:选择并返回操作符的数据类型。只得到类型,不实际计算表达式的值。

自定义数据结构

(1)类

数据结构是把一组相关的数据元素组织起来,然后使用它们的策略和方法。

类一般不定义在函数体内,为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字应该与类的名字一样。

头文件通常包含那些被定义一次的实体。

(2)预处理器

#ifndef SALES_DATA_H

一般把预处理变量的名字全部大写。

术语

空指针 :值为0的指针,空指针合法但是不指向任何对象。nullPtr是表示空指针的字面值常量。

void*:可以指向任意非常量的指针类型,不能执行解引用操作。

知乎视频​www.zhihu.com

bool类型头文件_C++ Primer Chapter2 变量和基本类型相关推荐

  1. 能否用痰盂盛饭——谈谈在头文件中定义外部变量

    能否用痰盂盛饭--谈谈在头文件中定义外部变量 - garbageMan - 博客园 能否用痰盂盛饭--谈谈在头文件中定义外部变量 "能否用痰盂盛饭"并非是一个技术问题,而是一个哲学 ...

  2. C++中头文件中定义的变量

    1.在头文件.h中定义static变量,如: static int x;其实就等效于每个引用该头文件的源文件中,定义一个变量名为x的整型静态全局变量,每个文件中的x变量均属于本源文件,各文件中的互不相 ...

  3. bool类型头文件_[C++基础入门] 2、数据类型

    点击上方 蓝字 关注我呀! [C++基础入门] 2.数据类型 文章目录 2 数据类型 2.1 整型 2.2 sizeof关键字 2.3 实型(浮点型) 2.4 字符型 2.5 转义字符 2.6 字符串 ...

  4. c malloc 头文件_C/C++笔试题:主要考察C/C++语言基础概念算法及编程,附参考答案...

    1.编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数: 答:char *strcpy(char *strDest, const char *strSrc) { if ...

  5. sizeof 头文件_c/c++基础之sizeof用法

    在 C/C++ 中,sizeof() 是一个判断数据类型或者表达式长度的运算符. 1 sizeof 定义 sizeof 是 C/C++ 中的一个操作符(operator),返回一个对象或者类型所占的内 ...

  6. c malloc 头文件_C 数据类型

    在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统.变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式. C 中的类型可分为以下几种: 序号 类型与描述 1 基本类型 ...

  7. 使用map的find头文件_C++ map的基本操作和使用

    1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...

  8. c malloc 头文件_C/C++求职者必备 23 道面试题,一道试题一份信心!

    1. Static有什么用途? (1)函数体内static变量的作用范围是该函数体,该变量的内存只被分配一次,因此它的值在下次调用时不变: (2)模块内的static全局变量同样只能在该模块内的函数访 ...

  9. c malloc 头文件_c++个人学习笔记——1.头文件声明

    简单介绍了C++头文件声明与C语言的差异,并对常见的部分头文件作了介绍. //C++中常用写法 最简单的C++程序往往是上面这样声明头文件. #include为C/C++中包含头文件命令,用于将指定头 ...

最新文章

  1. 艾伟_转载:学习 ASP.NET MVC (第五回)理论篇
  2. 求助帖:android开发初期:为什么我在活动二设置的singInstance模式跑到活动三去了???
  3. Android短信发送流程之普通短信发送(原)
  4. 递归与分治——二分查找算法(折半查找算法)
  5. Keras-数据增广
  6. Matlab求欧式距离
  7. np.mean(data, axis=0)函数
  8. [Flash开发笔记] List控件--删除指定label或data的项
  9. 怎么用计算机弹histheme,来至世界最好的器乐演奏大合集可做音乐素材-Various Artists 2015  (20CD)FLAC/MP...
  10. 压缩包密码字典_压缩包密码pojie!
  11. Linux TCP/IP 网络工具对比:net-tools 和 iproute2
  12. QString中去除空格
  13. 学习Python的pyecharts的过程中踩到的一些坑
  14. 浅谈文字编码和Unicode(上)
  15. 机器学习之梯度下降法(GD)、随机梯度下降法(SGD)和随机平均梯度下降法(SAGD)
  16. html5div随窗口大小,css怎么设置div随着窗口大小变换
  17. 【工具】hadoop国内下载镜像
  18. 网页文字无法复制?学会这6种方法,想要的文字都能手到擒来
  19. 读书百客:《绮罗香·咏春雨》赏析
  20. 妇与术(二):女性营销频频翻车?搞懂“女性凝视”太太太有必要了!

热门文章

  1. 转换为正整数_进制之间的转换
  2. 5G冲击下,软件测试行业面临的新挑战和机遇
  3. java 标准_Java标准注解
  4. 分析mysql慢查询_mysql慢查询的分析方法_MySQL
  5. linux内核丢包分析工具,Linux模拟网络丢包与延迟的方法
  6. 测试监控系列:使用vb批量统计nmon结果
  7. MongoDB怎么做性能测试,看看这篇大神总结
  8. char 赋值 加入变量_王牌编程语言Java常量、变量、数据类型详解
  9. html+fadein动画,使用Animate.css制作超炫的CSS3动画
  10. 高光谱提取薯叶特征波长