最近两天打开本科学校的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. 有关UITableViewCell的侧滑删除以及使用相关大神框架MGSwipeTableCell遇到的小问题

    提起笔,却不知道从何写起了,今天一整天都耗费在了这个可能根本不算是问题的小问题上,至今仍有一种蛋蛋的忧桑..(噢,不是提笔,是键盘手T_T) 表格视图在项目中就像是每日的家常便饭,在cell上添加侧滑 ...

  2. Java向上转型注意事项

    继承.接口:Java子类中如果含有父类中不包含的变量与方法,子类对象向上转型时就是丢失这些变量和方法. interface SuperClass{ int i = 2; void f() ; } cl ...

  3. Eclipse Tomcat : Project facet Java version 1.7 is not supported.

    在Eclipse打开一个项目,并用Tomcat运行时,报错:Project facet Java version 1.7 is not supported. 大致的截图如下: "项目中的jd ...

  4. apache shiro内置过滤器 标签 注解

    内置过滤器 anon(匿名)  org.apache.shiro.web.filter.authc.AnonymousFilter authc(身份验证)       org.apache.shiro ...

  5. 计算app内部缓存文件大小

    #pragma mark - 计算单个文件大小 - (long long)fileSizeAtPath:(NSString*)filePath{ NSFileManager* manager = [N ...

  6. Python初体验_基础(一)

    一:变量 变量的赋值: name = "Meng" 上述代码声明了一个变量,变量名为name,变量name的值为:"Meng" 变量定义: 一个在内存存数据的容 ...

  7. NumberBox( 数值输入框) 组件

    本节课重点了解 EasyUI 中 NumberBox(数值输入框)组件的使用方法,这个组件依赖于 ValidateBox(验证框)组件.一. 加载方式//class 加载方式<input typ ...

  8. (三)一个工作任务引起的乱战——udp通信

    先上代码.该代码是在问度娘的过程中搜到的,自己实验运行了下,可以使用(vs2010  net fram4.0).服务端代码: using System;using System.Collections ...

  9. Ubuntu下安装android studio的时候,无法进入图形界面--/usr/lib/jdk1.8.0_60/jre/lib/i386/libawt_xawt.so: libXtst.so.6: 无法打开共享对象文件: 没有那个文件或目录

    详细错误描述: java.lang.reflect.InvocationTargetException    at sun.reflect.NativeMethodAccessorImpl.invok ...

  10. AVL树相关操作

    #include <iostream> using namespace std; //AVL树的节点 template<typename T> class TreeNode { ...