最近两天打开本科学校的C++教材,快速回顾了一下C++方面的内容。虽然书本内容比较基础,但是还是有些知识点值得自己强化记忆。分几篇文章,加上自己的理解记录如下。

先回顾面向过程的部分。

C++数据类型

1、数据类型修饰符:

  1.1 long不仅可以修饰int,还可以修饰double;而short只能修饰int;

  1.2 "只有修饰符"的数据类型都是"修饰符 int"的简写,比如unsigned long是unsigned long int的简写。

2、整型常量:八进制数以0开头,十六进制数以0x或者0X开头。

3、浮点型常量:1.23*10^4在C++中可以表示为1.23E4或者1.23e4。

4、转义字符:

  4.1 若转义字符后边跟的是一个整型常量,则必须是一个以0为前缀的八进制数(注意前缀0可以省略),或者以x为前缀的十六进制数(注意是x而不是0x);

  4.2 若转义字符后面跟有字符时,其字符必须小写,大写只能表示其自身。如'\E'认为就是'E'。

5、变量:

  5.1 变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。

  5.2 C++要求变量作强制定义的目的:

    5.2.1 凡未被事先定义的,不作为变量名,保证程序中变量名使用的正确;

    5.2.2 每个变量被指定为一个确定类型,在编译时就能为其分配相应的存储单元;

    5.2.3 在编译时就能根据变量类型检查其进行的运算是否合法。(如:a, b为实型变量,则不允许进行求余运算)

  5.3 #define定义的符号常量和const定义的常变量的区别:

    符号常量只是用一个符号代替一个字符序列,在编译预处理时把所有符号常量替换为指定的字符序列,它没有类型,在内存中并不存在以符号常量命名的存储单元;

    而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元。

  5.4 C++中一般使用常变量。因为使用const语句定义常变量带有数据类型,便于系统进行类型检查,同时它还具有计算初值表达式的功能。

6、在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。

  6.1 如a || b || c,只要a为true就不必判断b和c;

  6.2 如int a = 1, b = 2, c = 3, d = 4, m =5, n =6; bool x; x = (m = a > b) && (n = c > d); 执行完之后n的值不是0,而仍然是6。

7、逗号运算符:

  7.1 int a; (a = 3 * 5, a * 4), a + 5; 执行完之后,a为15,第二条语句整个表达式的值为20;

  7.2 逗号运算符是所有运算符中级别最低的。

程序控制语句

1、if...else...语句中,else总是与离它最近的上一个if配对。

2、switch...case...语句中,case后跟的是常量表达式(不能是普通变量),常量表达式的值必须是整型、字符型或枚举类型。

3、for(statment1; statement2; statement3),如果for循环内有执行到continue语句,则跳到执行statement3,并进行下一轮循环。

数组和结构体

1、字符串处理:

  1.1 gets(str)的作用是从终端输入一个字符串到字符数组,并且得到一个函数值,该函数值是字符数组的起始地址。(本节下述str开头的均为char *类型)

    拓展:cin.get(str, size),每次读取一整行,并把enter键生成的换行符留在输入队列,通常这样组合使用:cin.get(str, size).get();

       cin.getline(str, size),每次读取一整行,并把enter键生成的换行符抛弃;用法与gets(str)几乎一样,只是多了一个size参数;

         getline(cin, string),每次读取一整行,并且为string类型;

         getchar(ch),接受一个字符。

  1.2 puts(str)的作用是将一个字符串(以'\0'结束的字符序列)输出到终端。

  1.3 strcat(strDest, strSource)是将字符串strSource连接到字符串strDest后面,返回为字符数组strDest的地址。

  1.4 strcpy(strDest, strSource)是将字符串strSource复制到字符数组strDest中去,返回为字符数组strDest的地址。

  1.5 strcmp(str1, str2)比较str1和str2,若str1 == str2,返回0;若str1 > str2,返回一个正整数;若str1 < str2,返回一个负整数。

  1.6 strlen(str)返回字符串的实际长度,不包括 '\0' 在内。

cin.get()

每次读取一整行并把由

Enter

键生成的换行符留在输入队列中

C++基础回顾1(数据类型, 控制语句, 数组)的更多相关文章

  1. JavaScript 基础 (变量声明, 数据类型, 控制语句)

    创建: 2017/09/16 更新: 2017/09/24 更改标题 [JavaScript 概要]-> [JavaScript 基础] 完成: 2017/09/25 更新: 2017/10/0 ...

  2. ndk学习之C语言基础复习----基本数据类型、数组

    关于NDK这个分类在N年前就已经创建了,但是一直木有系统的记录其学习过程,当然也没真正学会NDK的技术真谛,所以一直也是自己的一个遗憾,而如今对于Android程序员的要求也是越来越高,对于NDK也是 ...

  3. Java基础回顾_第一部分

    Java基础回顾 基本数据类型 数值类型 什么是字节? 位(bit):是计算机中数据的最小单位 字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B来表示 1 B = 8 bit 字符: ...

  4. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  5. day 50 js-part1基础语法,数据类型及用法,流程控制语句,循环

    js基本概念: JavaScript 是世界上最流行的脚本语言. JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. JavaScript ...

  6. 1、java基础回顾与加强

    一.    基础回顾 1   集合 1.1  集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList:    数组实现, ...

  7. JavaScript基础回顾一(类型、值和变量)

    请看代码并思考输出结果 var scope = 'global'; function f(){ console.log(scope); var scope = 'local'; console.log ...

  8. python高级(1)—— 基础回顾1

    Python基础回顾 认识变量 在学习了之前的Python零基础入门系列[洗礼灵魂,修炼Python](说明一下,这个系列现在回过来再来看这个名字确实好土啊,然后有些知识点感觉还不太精准,后期看如果有 ...

  9. 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念

    055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...

随机推荐

  1. Css轮廓

    css code: p{ outline-width:2px; outline-color:aqua; outline-style: groove; }

  2. MYSQL数据备份与还原学习笔记

    数据备份与还原   1.mysqldump 1.1 文件地址: E:\xampp\mysql\bin 文件名:mysqldump.exe CMD下进入mysqldump.exe cd E:\xampp ...

  3. 把本地建好的项目提交到git上

    才开始用git来控制项目版本,刚开始时不是很会用,由于公司最近新开个项目,需要我把建好的项目放到git上去,慢慢的摸索,终于有点小小的结果,把一个项目成功提交到git上了,在这里记录下,以免下次忘记, ...

  4. int与Integer

    int 是基本类型,直接存数值 integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者>>integer 是后者(也就是一个 ...

  5. linux增大交换分区

    进来在批量搭建环境,遇到搭建完环境之后发现swap忘记的情况,后来百度了下,发现了下面的方法,网上可能存在好多相应的帖子说这个事情也比较简单,以下是自己实践的结果,分享给大家. 1.查看现有memor ...

  6. ftp nfs samba比较

    首先从字面意思上区分一下:1. FTP(文件传输协议)2. NFS(网络文件系统)3. samba 即smb(服务信息块)协议其中FTP 是TCP/IP协议栈所提供的一种子协议,该子协议具体可以实现在 ...

  7. Facebook登录 AndroidStudio

    简介 主页:https://www.facebook.com/ Android开发者支持:https://developers.facebook.com/docs/android/  应用管理:htt ...

  8. MVC Controller 基类中的Request

    今天在测试自己MVC程序的时候发现之前写代码的一个BUG,需求是每个页面要获取当前URL链接中包含的城市ID,我把获取url的方法写到了Controller的基类BaseController(Base ...

  9. iframe顶部跳转跨域问题

    $("#button").on("click", function () {                  //  top.location.locatio ...

  10. QueryFilter与SpatialFilter - 浅谈

    我们知道,GIS不仅仅有属性查询,还有空间查询.而 QueryFilter 对应于 属性查询,而 SpatialFilter 对应于 空间查询.