1.宏常量
#define Day 7
2.const修饰的变量
const int mount = 12;
sizeof(int)的位数是四位,double是8位
1.换行\n
2.反斜杠\\
3.水平制表符\t
++a和a++。
区别:前置递增 先让变量+1再进行表达式运算,后置递增 先让表达式运算 再让变量+1
1.跳转语句
break 跳出当前就近循环
continue 跳出判断但是继续执行循环 break跳出循环不执行循环
goto 飞雷神 强制去想要的位置
2.选择结构
三目运算符 a>b?a:b=100(a大于b吗 然后赋值)
一维数组定义
1.数据类型 数组名[数组长度]
2.数据类型 数组名[数组长度] = {值1,值2...}
3.数据类型 数组名[] = {值1,值2...}
二维数组定义
1.数据类型 数组名 [行数][列数]
2.数据类型 数组名 [行数][列数] = {{数据1,数据2},{数据3,数据4}}
3.数据类型 数组名 [行数][列数] = {{数据1,数据2 ,数据3,数据4}}
4.数据类型 数组名 [][列数] = {{数据1,数据2 ,数据3,数据4}}
头文件定义函数.h格式、源文件include头文件并具体血头文件函数的具体实现
定义指针
int a = 10;
指针定义的语法:数据类型 * 指针变量名
int* P;
让指针记录变量a的地址
P = &a;
使用指针
可以通过解引用的方式来找到指针指向的内存
指针前加 * 代表解引用,找到指针指向的内存中的数据
*P = 100;
1.结构体建立
struct Student
{
string _name;
int _age;
double _score;
};
2.创建
Student stuarr[3]//三个人 多余的默认是空
{
{"堂堂",11,25},
{"北禾",12,24}
};
3.结构体指针
Student s = { "张三",12,56 };
//指针指向结构体变量
Student* p = &s;
cout << p->_name << p->_age << p->_score << endl;
4.结构体重const的使用场景
void zhizhen(const Student* p)
{
/*p->_age = 10000;*///输出实参改变
//为了防止这种 不想把外面的实参给改了就要在形参前面加上一个 const
//这种输出手法 类似于C#的属性只读和只写
cout << p->_name << p->_age << p->_score << endl;
}
5.嵌套结构体
//创建一个学生的结构
struct Student1
{
string sName = " ";
int Score = 0;
};
//创建一个老师的结构
struct Teacher1
{
string tName;
Student1 sArray[5];
};
int random = rand() % 61 + 40;//40-100 随机数
//随机数种子
srand((unsigned int)time(NULL));
1.全局区:全局变量和const修饰的全局变量
只要带局部的都不在全局区里面
2.栈区
int* func()
{
int a = 10;//局部变量 存放在栈区 栈区的数据在函数执行完成后自动释放
return &a;//返回局部变量的地址 //这是不对的 不能返回a
}
3.堆区
//堆区 管理员管理生死 系统结束 会自动释放
int* func1()
{
//利用new关键字 可以将数据开辟到堆区 开辟的是地址
//指针 本质也是局部变量 放在栈上 指针保存的数据是放在堆区
int* p = new int(10);
return p;
}
4.new操作符
//如果想释放堆区的数据 利用关键字delete
delete p;
delete[] arr;//释放数组