C++基础部分
简介
C++是一个中级语言,既可以进行低层编程(驱动、内核),也可以开发高层应用(游戏、GUI、桌面应用等)。它在C语言的基础上包含了面向对象的机制,是一个非常重要的编译语言。C++源码经过编译后会得到机器码。
核心特点:
- 简单:丰富的库,数据类型多样;
- 机器独立,但是不跨平台:C++可执行文件不能跨平台(Linux上编译的程序不能在Windows上运行),但是可以相同系统的不同机器上运行;
- 中级语言:既可以做系统编程,可以构建大规模用户程序;
- 丰富的库支持
- 执行速度
- 指针和内存直接访问(direct memory-access)
- 面向对象
- 编译语言
C++的应用:
- 操作系统&系统编程
- 浏览器
- 图形&游戏引擎
- 数据库引擎
- 云、分布式系统
配置环境
- Windows: codeblocks
- Linux: gcc/g++ (建议)
- Mac OS: Xcode
- 在线平台:https://ide.geeksforgeeks.org/
数据类型
所有的变量在声明的时候都需使用数据类型来限制自身存储数据的类型。不同类型的变量在声明时会得到大小不同的内存。C++中的数据类型大致可分为三大类:
第一类都是内置的或者是预先定义的数据类型;
- Integer:整数。int型一般占4个字节,范围是-2147483648 to 2147483647
- Character:字符。char型一般占1个字节,范围是-128到127或者0到255
- Boolean:bool型存储true或者false
- Floating Point:单精度浮点数。占4个字节
- Double Floating Point:双精度浮点数。占8个字节
- void:空,一般用来表示没有返回值的函数
- Wide Character:宽字符
数据类型修改器
Data Type | Size (in bytes) | Range |
---|---|---|
short int | 2 | -32,768 to 32,767 |
unsigned short int | 2 | 0 to 65,535 |
unsigned int | 4 | 0 to 4,294,967,295 |
int | 4 | -2,147,483,648 to 2,147,483,647 |
long int | 8 | -2,147,483,648 to 2,147,483,647 |
unsigned long int | 8 | 0 to 4,294,967,295 |
long long int | 8 | -(2^63) to (2^63)-1 |
unsigned long long int | 8 | 0 to 18,446,744,073,709,551,615 |
signed char | 1 | -128 to 127 |
unsigned char | 1 | 0 to 255 |
float | 4 | |
double | 8 | |
long double | 12 | |
wchar_t | 2 or 4 | 1 wide character |
以上数据不同机器不同编译器之间会有差异,表中数据来源于gcc 32位,具体可以通过sizeof来查看各个数据类型占用的字节数。
#include<iostream>
using namespace std;
int main(){
cout<<sizeof(int)<<" "<<sizeof(char)<<endl;
return 0;
}
运行结果
4 1
变量
变量就是给内存位置起的名字。
- 在程序执行期间,变量所存储的值会改变;
- 一个变量只是给一个内存位置的名字,所有在变量上的操作都会影响内存位置;
- 在C++中所有的变量必须先声明(declaration)再使用。
声明的两种方式:
// Declaring a single variable
type variable_name;
// Declaring multiple variables:
type variable1_name, variable2_name, variable3_name;
变量名的规范:
- 由数字、字母、下划线组成,不能以数字开头
- 不和保留的关键字冲突
声明和定义:声明是指在第一次使用前声明或者引入变量名;定义是指给变量分配内存地址和值。大多数情况,变量的声明和定义同步进行。
变量的分类
- 局部变量(Local Variable):定义在代码块、方法和构造方法内的变量;局部变量在进入代码块或者函数调用时创建,在退出代码块或函数返回后销毁;局部变量需要初始化;
- 实例变量(Instance Variable):生命周期和实例相同,初始化不是必须的,通过实例来访问,如果缺省则使用默认的实例;
- 静态变量(Static Variable):类变量,所有类实例共享。初始化不是必须的;在程序启动时创建,在程序终止时销毁;通过类名来访问,类名缺省也没关系。
循环
还有一种循环,图中并未给出:
for(int x: arr)
{
//...
}
分支
if-else、if-else if-else、goto、continue、break、return