C++基础笔记
###基本语法
- “#include”预处理指令 引入某个文件的作用
“#include”引入自己创建的要加入双引号 并且加上 .h
- 以下三种方式功能一样
using namespace std;
using std::cout;
std::cout <<"xxx";
- 语法区别
unsigned 无符号的 不能存在负号
long long 类型 更大的整数值 long double 类型 更大的浮点数数值
E表示法 3.4e9和3.4e+9一样 代表 3.4 x 1000000000
- 特殊关键字
auto 可以自动判断类型 比如 auto a = ‘a’;
- 类型
字符串 其实是用 char[]代替的
\0表示字符结束 或者 用 char a[] = “baidu.com” ;表示,这个时候字符串长度是9 字符数组长度是10,因为还有一个默认的\0
如果一段字符串太长,可以分开多个双引号间隔使用,c++自动拼接,比如:“baidu” “.com”
c++也有string类型可以使用,需要前面引入下string类型 就c#一样可以使用了
- 方法
strlen() 表示取得字符串长度
strcmp(数组1,数组2) 比较两个数组内容是否相等,0代表相等,1代表不等
- 内存和指针
指针的定义 int* p = &5;
解指针 (p)
空指针定义
1. int p1 = 0;
2. int p2 = NULL;
3. int* p3 = nullptr; 这种方式可以转换任意类型的指针类型,推荐
4. int* p4 = new int; *p4 = 100; delete *p4; 注意这种指针一定要记得释放内存,否则会永久占用内存地址
指针和数组关系
数组其实就是一个指针,所以说比较两个数组是否相等,即便里面的值是一样的,结果也是0,就是false的意思,因为比较的其实是指针。所以使用 strcmp(数组1,数组2) 去比较两个数组的内容是否相等,0代表相等,非0为不相等
- 创建数组
- 直接创建数组 int array2[4]{1,2,3,4}; 该方式数组之间不能相互赋值
- 指针创建数组 int* p = new int[]; p[0] = 50;
- 模板类array array<int,9> a1 = { 1,1,2,3,4,5,6,8}; 该方式数组之间可以相互赋值
- 循环
for循环和c#一致
while循环和c#一致
10.类型别名
- 使用宏定义实现,宏的名字放在前面,后面是类型
没有太多意义,就是使用END 代替后面的内容#define END return 0; #define UString string
- 使用 typedef 定义类型别名,类型放在前面,后面是类的别名
typedef string UString;
- 区别
“#define” 可以给任意类型定义别名
typedef 只能给类型定义别名
“#define” 定义类似string这种类型是不需要 分号结尾的
typedef 定义类似string这种类型是需要 分号结尾,否则报错