一、开始

(一)输入输出

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. NYOJ--20--搜索(dfs)--吝啬的国度

    题意,N座城市有N-1条路,目的是找到哪个城市可以到目的城市 //NYOJ--search--吝啬的国度 #include<iostream> #include<vector> ...

  2. Head First 设计模式 第2章 观察者模式

    第2章.观察者模式 1.定义: 在对象之间定义一对多关系,当一个对象改变状态时,该对象的依赖会收到通知,并自动更新. 2.介绍 在介绍观察者模式之前,先来说一个日常生活中经常碰到的事(可能现在的人碰到 ...

  3. JAVA中extends 与implements的用法

    1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重 ...

  4. 浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  5. Redis-入门笔记-15min带你一览redis

            如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!       少年入门笔记,整理出来一起入坑!入门的视屏 ...

  6. Java面试题大全

    前言 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应该说被面试到的几率很大.这里整理挑选出来供大家面试前拿来看一看,所有题目整理自网络,有一 ...

  7. FFT 专题讲解

    FFT是什么? FFT是快速傅里叶变换(fast Fourier transform)的简称.在ACM领域主要是用来快速求解多项式乘法的算法, 在信号领域也有很大用途 基础知识 卷积 举个例子,给你两 ...

  8. MJExtension框架源码分析

    iOS开发中经常会用到数据和模型的互相转换,大致有两种转换方式:1.手动写转换的代码,2.利用开源库进行转换.常用的开源库有:JSONModel.Mantle.MJExtension.YYModel等 ...

  9. PHPExcel导出excel表格

    if(!function_exists('exportExcel')){    //导出excel文件    function exportExcel($datas, $save_method='ht ...

  10. 使用Visual Studio 2017开发python,并在iis上部署Python Django

    作为宇宙第一IDE,怎么可以不支持python开发呢? 1.Visual Studio Installer 扩展Python开发 开始菜单中打开Visual Studio Installer,点修改. ...