和java不太一样的一样的标题打个*,方便对比
#include
using namespace std;int main()
{
system("pause");
return 0;
}
std::cout << "需要打印的内容" <<需要打印的变量<
endl 是一个特殊的输出流控制符,它代表"end line"
注意加#include
//
/*
数据类型 变量名 = 变量初始值;
int b =10;
通常在文件上
#define 常量名 常量值
*这个听学长说用了容易出问题所以还是推荐第二种
通常在变量定义前假关键字const
const 数据类型 常量名 = 常量值
short
int
long
long long
单精度 float (7位有效数)
双精度 double(15-16位有效数)
char xx = ‘a’

char 变量名[ ] = "字符串值"
string 变量名 = "字符串值"
bool flag = true/false
是一个集合,里面存放了相同类型的数据元素,并且是由连续的内存位置组成的
数据类型 数组名[数组长度];
数据类型 数组名[数组长度] = {值1, 值2, 值3 ...};
数据类型 数组名[ ] ={值1, 值2, 值3 ...};
1. 可以统计整个数组在内存中的长度: sizeof(数组名)
e.g获取数组元素个数
sizeof(arr)/sizeof(arr[0]) //整个数组占用的内存空间/每个元素占有的内存空间
2. 可以获取数组在内存中的首地址 :cout<<数组名<
e.g数组中第一怪元素的地址为:(int)&arr[0] //其实和首地址是一样的
&是取址符
二维数组就是在一维数组上多加一个维度
数据类型 数组名[行数][列数];
数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};
数据类型 数组名[行数][列数] = {数据1, 数据2, 数据3, 数据4};
数据类型 数组名[][列数] = {数据1, 数据2, 数据3, 数据4};
*推荐使用第二种
查看二维数组所占内存空间: sizeof(数组名)
e.g获取二维数组行数
sizeof(arr)/sizeof(arr[0])
获取二维数组列数
sizeof(arr)/sizeof(arr[0][0])
获取二维数组首地址: 直接打印
处理四则运算

*注意在除法运算中除数不可以为0
将表达式的值赋给变量

表达式的比较,返回true/false

根据表达式的值返回true/false

非零的数都是真,不仅仅是1!
程序按顺序执行,不发生跳转
依据条件是否满足,有选择执行相应功能,还可以嵌套
if(条件){
满足条件执行的语句
}
if(条件){
条件满足执行的语句
}else{
条件不满足执行的语句
}
if(条件1){
条件1满足执行的语句
}else if(条件2){
条件2满足执行的语句
}else{
都不满足执行的语句
}
表达式1 ? 表达式2 :表达式3
1为真,执行2
1为假,执行3
e.g 1
将a和b做比较,将变量大的赋值给c
c = (a>b ? a:b);
e.g2
三目运算符返回的是变量,可以继续赋值
(a>b ? a:b) =100;
执行多条件分支
switch(表达式){
case 结果1: 执行语句;break;
case 结果2: 执行语句;break;
...
default: 执行语句;break;
}
case里如果没有break会一直执行下去
与if相比,对于多条件判断效率高,但是不可以判断区间
依据条件是否满足,循环多次执行某段代码,可以嵌套
满足循环条件,执行循环语句
while(循环条件){
循环语句
}
满足循环条件,执行循环语句
for(起始表达式;条件表达式;末尾循环体){
循环语句;
}
用于跳出选择/循环结构
在循环中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
如果标记的名称存在,执行到goto语句时候,会跳转到标记的位置
goto 标记
标记:
返回值类型 函数名(参数列表){
函数体语句
return 表达式
}
e.g
int add(int num1, int num2){
int sum = num1 +num2;
return sum;
}
函数名(参数)
函数调用时将数值传入给形参;值传递时,如果形参发生并不会影响实参
e.g 交换输入的两个数
void swap(int num1, int num2){
int temp = num1;
num1 = num2;
num2 = temp;
}
e.g
void test01(){
cout << "this is test01" << endl
}
void test02(int a ){
cout <<"this is test02 a ="<
} int test03(){ cout<<"this is test03" < return 1000; } int test04(int a ){ cout <<"this is test02 a ="<
return a; } 提前告诉编译器函数名称以及如何调用函数,这样函数就可以在mian'方法后面。 函数的实际主题可以单独定义 *声明可以多次,定义只有一次 e.g //声明 int max(int a, int b); int main(){ 略 } //定义 int max(int a, int b){ return a>b?a:b; } 让代码结构更加清晰 步骤: 1. 创建后缀名为.h的头文件 2. 创建后缀名为.cpp的源文件 3. 在头文件中写函数的声明 4. 在源文件中写函数的定义 感觉视频比较直观:55 函数-函数的分文件编写_哔哩哔哩_bilibili 用途:可以通过指针保存一个地址,间接访问内存 一个指针32位占4个字节空间,64位占4个字节空间 数据类型*指针变量名; e.g 通过解引用的方式来找到指针指向的内存 *指针 e.g 指针变量指向内存中编号为0的空间 用途:初始化指针变量 注意:空指针指向的内存是不可以访问的(内存编号0~255) int *指针 = NULL; 指针变量指向非法的内存空间 看const右侧紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量 指针的指向可以修改,但是指针指向的值不可以修改 const int*p = &a; 指针的指向不可以改,指针指向的值可以改 int * const p = &a; 指针指向和指针指向的值都不可以改 const int * const p =&a; 指针作为函数参数的时候,可以修改实参的值 e.g两个数字交换 值传递不会改变实参 就是我们一般的数字交换函数,懒得写了 地址传递会改变实参 求出数据类型占用内存大小 sizeof (数据类型/变量) 用于从键盘获取数据 cin>>变量无参有返
有参有返
声明*
分文件编写*
指针*
定义
使用
空指针
野指针
const修饰指针
修饰指针 --常量指针
修饰常量 --指针常量
既修饰指针又修饰常量
搭配使用
数组
函数
值传递
地址传递
关键字
sizeof
cin*