一、开始

(一)输入输出

1.endl的作用

endl操纵符用于结束当前行,将与设备关联的缓冲区内容刷新到设备中。如果没有这个字符,一旦程序突然崩溃,就可能导致输出还停留在缓冲区里,而不显示到设备。

2.输入输出运算符返回值的理解

“>>”和“<<”是运算符,他们的作用是将其左侧的运算对象。

3.输入输出运算符能自动判断操作对象的数据格式,不需要像C语言的printf和scanf函数一样对输入、输出参数进行格式化处理。因为标准库内定义了不同版本的输入输出运算符(重载?)

3.输入运算符的状态,例如,std::cin >> value 这个表达式,当用户输入非法时候(数据类型不匹配或者遇到输入结束),才会返回非真值。

二、变量和基本类型

(一)基本内置类型

1.基本数据类型包括算术类型和空类型,其中算术类型由字符、整形数、布尔值和浮点数4个类型组成。字符、整形数和布尔值可归为一类,浮点数属另一类。

C++算术类型

大类

具体类型

含义

最小尺寸

实际尺寸

(Windows 10
64bit系统)

整形

bool

布尔类型,实际上是0和1

未定义

8

char

字符类型

8位

8

wchar_t

宽字符(UNICODE出现前的宽字符类型)

16位

16

char16_t

Unicode字符

16

16

char32_t

Unicode字符

32

32

short

短整型

16

16

int

整形

16

32

long

长整型

32

32

long
long

长整型(两个叠加使用也是一个数据类型)

64

64

浮点型

float

单精度浮点数

6位有效数字

32

double

双精度浮点数

10位有效数字

64

long
double

扩展精度浮点数

10位有效数字

12

长度规定:int>=short,long>=int,long long>=long

字符型分为三种:char,signed char和unsigned char,三者不是同一类型。但char 和 signed char具体含义如何区分,由编译器决定。

字符串常量实际上是由字符常量组成的数组,同时编译器在这个数组后面加1个空字符“\0”。

Cout输出字符变量例如char =
‘a’,并不是输出“a”,而是对应的ascii数字。

(二)变量

1.变量的概念。变量提供一个具名的可供程序操作的存储空间。在C++中,变量和对象意义相同。

2.初始化问题。在C++中,当声明某变量使用“=”符号时候,是初始化,不是赋值语句。

3.初始化形式。在C++新标准中,全面应用{}来初始化对象(包括变量和类对象),例如 int a{9}。

4.变量的声明和定义。如果仅仅是声明一个变量,则用extern关键字,例如 extern int a。变量可以被声明多次,但只能定义一次。

5.引用必须初始化,且初始化后不能更改。

6.关于晦涩难懂常量(const)的一些概念。

(1)指向常量的指针和引用必须也是对应的常量指针和引用。不允许一个非常量引用绑定一个常量,但允许一个常量引用绑定一个非常量;同理,不允许一个非常量指针指向一个常量,但允许一个常量指针指向一个非常量。例如:

const int a = 1;

const int &b = a; //正确。

int a2 = 3;

int &b2 = a;//错误,引用不匹配。

但允许将一个常量引用绑定到一个非常量上,例如:

cons tint &reb = a2;

const double pi = 3.14;

double *ppi = &pi; //错误,非常量指针指向一个常量。

但反过来允许,例如:

double pi2 = 3.14;

const double *ppi2 = &pi2; //正确,允许一个常量指针指向一个非常量。

(2)关于顶层const 指针和底层const指针的概念。实际上主要是涉及两个概念,一个是该变量指向变量是const变量,即变量不能被改变;一个是该指针本身是常量,指针不能被改变,称为常量指针。通过以下例子来解释:

const double  pi =
3.14;

double rate = 0.68;

double * const pRate = &rate; //OK,这是一个指向非常量的常量指针

const double * pPi = &pi;//OK,指向常量的普通指针

const double * const cpPi = &pi;//OK,指向常量的常量指针。

(3)常量表达式的要求。左值定义为常量,右值也应该是常量,也就是说他的值在编译时候就能够确定。

(三)类型别名(typedef)

typedef char *pstring;

const pstring cstr = 0,这个语句的理解不能使用简单替换办法,否则会得出错误的意义。正确的理解办法是将pstring等同于一个数据类型,因此,此句话的const是修身指针的,表示为指向char的常量指针,而非const char *所表明的指向char常量的指针。虽然都是指针,但意义不同。

三、数组

(一)数组的初始化和赋值应注意的问题

1.数组之间不能直接赋值,即数组名不能直接进行赋值运算。

2.复杂数组声明的几个例子:

int * 
ptrs[10]  //ptrs是含有10个整形指针的数组。

int &refs[10]  
//错误,不存在引用的数组。

int (*Parray)[10] //Parray是一个指向10维整数组的指针。

int (&arrayRef)[10] //arrayRef是一个10维整形数组的引用。

int *(&arrayRef)[10] //arrayRef是一个10维整形指针数组的引用。

要理解数组声明的含义,最好的办法是从数组的名字开始,由内而外阅读。

(二)数组和指针之间的关系

1.数组名和对应类型的指针互为等价(但数组名不能进行++或—操作)。在用到数组名的时候,它被编译器自动替换为指向该数组第一个元素的指针。

例如 int a[10] = {0}; 则有int *pArr =
a,等价于 int *pArr = &a[0];

C++ Primmer 学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. GPUImage原理

    GPUImage是一个开元的基于GPU的图片或视频的处理框架,其本身内置了多达120多种常见的滤镜效果,并且支持照相机和摄像机的实时滤镜,并且能够自定义图像滤镜. 美颜的基本概念 OpenGL ES: ...

  2. akoj-1280另类阶乘问题

    另类阶乘问题 Time Limit:3000MS  Memory Limit:65536K Total Submit:22 Accepted:20 Description 大家都知道阶乘这个概念,举个 ...

  3. angular学习(三)-- $scope

    1.3 视图数据模型:$scope $scope 是用来视图和数据之间的胶水.粘合剂 视图和控制器之间的数据桥梁 用于在视图和控制器之间传递数据 用来暴露数据模型(数据.行为) 监视模型数据的变化,做 ...

  4. 分辨率验证工具 - 【Firesizer】的使用

    Firesizer是一款测试分辨率的插件. 下载方式:Firefox工具栏——〉工具——〉附加组件--〉搜索Firesizer并安装,浏览器会自动重启 使用方式:浏览器右下角直接切换分辨率即可,如下图 ...

  5. linux下访问windows的共享

    linux下,要访问windows的共享,有好几种情况,下面进行总结. 外面的文章,有点介绍需要使用samba,有点说什么都不需要,只需要mount加上参数, 功能是实现,不过原理,还是不太明白,我发 ...

  6. a标签链接到当前页内指定位置

    <a name="me">hello</a><br/><br/><br/><br/><br/>& ...

  7. fs模块练习

    1.fs+path练习01.判断 当前路径下的public是否存在,不存在则创建02.判断 public下的index.html文件是否存在,不存在则创建 <h1>index</h1 ...

  8. struts2整合JFreechart 饼图、折线图、柱形图

    struts2整合JFreechart 饼图.折线图.柱形图 上效果图: 当然可以将数据导出图片格式存储.具体下的链接里的文件有保存成图片的操作. 因为是strust2整合JFreechart,所以s ...

  9. ASP.NET CORE 2.0 不小心踩得坑

    前言 我是跟着 https://github.com/FQLin/Docs 学习asp.net core 2.0 的 1.EF迁移 EF 的迁移方式有两种: Command-line interfac ...

  10. Andrew Ng机器学习课程笔记--week5(上)

    Neural Networks: Learning 内容较多,故分成上下两篇文章. 一.内容概要 Cost Function and Backpropagation Cost Function Bac ...