C++实用主义速成Part.1(大雾,请谨慎对待)
C++实用主义速成(大雾,请谨慎对待)
Licenced under CC-BY-NC-SA lecence.
编写 NaragNova , 转载请注明出处。
请注意,本文很少涉及一些在实践中可能涉及到的知识。如果你是想要认真学习编程的话,请务必配合其他有关C++基础的教程食用本文, 以防出现底层实现不清导致无法debug的尴尬情况,以及其他优化或者他人代码采用特殊语法无法读懂的情况。
序言
近几天突然发现其实如果砍掉那些繁琐的基础,其实大学里一个学期学到的C语言知识只要一个月就差不多可以完全掌握。
如果再砍掉那些底层一点的东西,只需要实用的话,一个小时基本可以大概掌握了(?)
在进行下一部分之前,请先预习前导的部分内容,或C++编程中的部分 “常识” 。
1. 在每一条语句结束的时候需要加一个分号,虽然没有硬性规定每一行只能写一条语句,但是请在保持代码整洁的基础上尽量做到一行写一条语句。请记住,每一个分号才代表一条语句结束。
1 // 这样看起来很整洁: 2 #include<iostream> 3 4 int main() 5 { 6 int i = 10; 7 int j = 20; 8 int c = i + j; 9 10 return 0; 11 } 12 13 // 相信这样没人看0x0 14 #include<iostream> 15 int main() 16 {int i = 10;int j = 20;int c = i + j;return 0;}
2. 计算机中的字符本质上是存储了一些数字的组合,在显示的时候会去对应的表中查找,将其显示到屏幕上。(例如ASCII码, 具体可以参考百度百科的ASCII码部分,链接如下。)编码不用特意去记,只要上网查找就可以了。
Part 1. 变量
这是C++里的变量类型(可能有遗忘,欢迎大牛指出改正)
对于一般的程序而言,常用的数据类型已经足够处理大部分的问题。
常用的变量类型有:
关键字 | 来源英文单词 | 类型的解释 |
int | Integer | 整形(整数类型) |
char | Character | 字符型 |
bool | Bool | 布尔类型变量 |
float | Float | 浮点类型变量,也叫实型,用于存储带有小数的数据。 |
wchar_t | 宽字符类型 |
相对不大常用的变量类型有 :
关键字 | 来源英文单词 | 类型的解释 |
short | short | 短整型,相对int类型存储的数据上限、下限要小。 |
long | long | 长整型,相对int类型能够存储的数据更大,但是在某些环境下,long等同于int。 |
long long | 长整型,相对int类型能够存储的数据更大,是c++中存储整型数据的上限。 | |
double | double | 双精度浮点数,可以存储精度更高的实数 |
在解决大部分问题的时候,只需要掌握常用的类型就可以了。下面为变量定义的举例:
1 // 定义方法: 变量类型关键字 + 分隔符 + 变量名 2 // 分隔符有: 空格 制表符(tab键), 插入分隔符数量多少不影响语句的正确执行。 3 // C++中,任何变量的名字不能与关键字重合,否则会出现错误导致程序不能正常执行。 4 // 变量名的命名规范为: 5 // 1) 变量名的第一个字不能是数字; 6 // 2) 变量名可以用大写,小写的英文字符与数字、下划线的各种排列组合 7 // 3) C++对大小写敏感,大小写不同的变量名视作不同的变量。 8 // 4) 变量名中间不能加分隔符。 9 // 另外, 变量可以在定义时赋予初始值。 10 11 12 // 举例: 13 int a; 14 float _b; 15 char Character; 16 double db = 1.2345;
请注意,变量存在“作用域”的概念,同一个变量只在其作用域中可以被查看到,离开作用域即被销毁。
作用域是程序的一个区域,一般来说有三个地方可以定义变量:
-
在函数或一个代码块内部声明的变量,称为局部变量。
-
在函数参数的定义中声明的变量,称为形式参数。
-
在所有函数外部声明的变量,称为全局变量。
数组 array
由于有些时候需要定义大量的变量, 逐个定义已经满足不了人们的需求了,就出现了数组。
这里举个例子: 某班有60个人, 需要存储所有人的成绩。
如果一个个定义变量, 60人还不多, 如果改为全省的, 全国的,那肯定是不现实的。由此,就诞生了神奇的数组:
// 数组的定义很简单,固定为 [数据类型] [数组名][[数组长度]]; 数组名是自己起的,只要不重复就行。 //例如要定义一个有10个整数的数组,就可以: int array[10];
// 同理,定义20个浮点数的数组可以写成:
float array[20];
定义好了,那怎么用呢?
这个也很简单,类似数学中有 ai 一样, 数组也有个东西叫 "下标" 。用的时候只需要 数组名[下标] 就可以引用到数组中对应下标的变量了。
// 数组引用 int arr[5] = {1, 3, 6, 8, 10}; arr[0] = 2; //对 arr 的第 0 个元素赋值为 2 , 此时 arr 的值为: {2, 3, 6, 8, 10} // 请注意, 数组下标从零开始。
Part2. 语句
曾经有人论证过,只需要循环、分支就能做解决所有的问题,但是你得给个算法。
在不考虑算法的情况下,只需要大致知道循环、分支语句就可以完成所有的程序设计。
顺序结构
顺序结构是最简单的, 顾名思义就是从上往下一条条执行语句。此处不过多赘述。
1 // 例如求几个数的平均数可以这么写: 2 3 int x = 1, y = 2, z = 3; // 一行中使用逗号分隔来建立多个变量 4 int average = x; 5 average = average + y; 6 average = average + z; 7 average = average / 3; // 此处就得到了三个数的平均数
分支结构
分支结构就是常见的 if 由于switch语句可以由多条 if 替代, 此处就只讲述 if 了。
if 语句的格式如下:
1 if ( 条件语句 ) // 条件语句可以是任何有值的语句, 比如赋值、 比较、 函数调用等 2 { 3 // 这里是如果条件为真要执行的代码段 4 } 5 else 6 { 7 // 否则执行这里的代码段 8 } 9 10 // 举例:如果 x > y 就让 x + 1, 否则 y + 1: 11 if (x > y) 12 { 13 x = x + 1; 14 } 15 else 16 { 17 y = y + 1; 18 }
需要注意的是, if语句的使用过程中容易出现逻辑错误, 需要在设计分支的时候谨慎使用, 避免一些逻辑上的失误。
循环结构
循环主要有 while, for, do while 三种, 由于实际使用中较少使用 do while 循环而 while 循环经常被 for 循环代替, 此处只详细讲述 for 循环, 并略过 do while 循环。
循环中最重要的语句就是 [循环控制条件] 了, 在满足这个条件的情况下循环才会继续执行。
for 循环
[初始化条件] :在循环执行前执行, 一般用于初始化一些变量。
// for 循环的格式为: for ( [初始化条件] ; [循环控制条件] ; [每次循环结束后处理语句] ) { // 这里是循环体, 每次循环都走一遍 } // 举例如下:例如要求某个数组中10个元素的和: int array[10] = { 1, 2, 4, 6, 10, 23, 65, 44, 2, 1}; // 假设这就是那个数组 int sum = 0; // 用这个变量来存放和 for(int i = 0; i < 10; i++) // 定义控制变量 i 的初值为0, 在满足 i < 10 的时候继续循环 // 每次循环结束 i 自增1 // ++为自增运算符, i++ 等价于 i = i + 1 // 不建议新手使用自增运算符,因为这个东西不理解的情况下很玄学。 // 如果非要使用的话请务必在单独的语句中使用。
// 感兴趣的话可以百度查询
{ sum = sum + array[i]; }
while循环
// while循环的定义如下: while ( [循环控制条件] ) { // 此处是循环体 } // 举例:求 1~10 的和 int i = 1; int sum = 0; while( i <= 10) { sum = sum + i; i = i + 1; }
这次就先说这些叭 0.0
以上皆是个人见解, 如有错误还请指正。