1. if 分支
基本 if 语句,以下是基本 if 语句的结构。
if(条件){
主体;
}
if 语句通过对条件进行求值,若结果为真(非 0),执行语句,否则不执行。
if...else 语句
if(条件){
主体1;
}else{//否则
主体2;
}
if...else 语句和 if 语句类似,else 不需要再写条件。当 if 语句的条件满足时会执行 if 里的语句,if 语句的条件不满足时会执行 else 里的语句。同样,当主体只有一条语句时,可以省略花括号。
2. 循环
2.1. for语句一般格式
//循环条件必须要写
for(循环变量赋初值;循环条件;循环变量增值){
语句组;} //{}里面的语句为循环体
执行过程:只有当循环条件为真时,才会执行循环体,否则退出循环。
#include <iostream> //c++的导入
using namespace std;
int main () {
// i=10;i--返回值10,10>=i; 后面再减一,i=9;
//如果把变量定义在for循环的初始化条件里面,i离开这个for循环,就失效了。
for(int i=10; i>=1; i-- ) {
cout<<i<<endl;
}
return 0;
}
2.2 while循环
while(循环条件){
语句;
}
语句执行规则:先进行条件判断,当条件成立时,执行语句,否则退出循环。
2.3 break
跳出当前循环,【跳出离自己最近的那个while或for 循环】
- for循环
- while 循环
2.4 continue
continue是结束本次循环,进入下一次循环。
-
while:重新进入下一轮的判断条件,循环体后面的内容都不执行,进入下一次循环。
-
for:进入善后操作
3. sizeof
- sizeof(类型 或者 变量)表示求该类型的变量或者变量在当前环境所占的字节数
- sizeof(数组变量)/sizeof(数组变量的类型):数组的元素个数。
4. 数组赋值
- 通过下标赋值
- 按元素类型名 数组名
[]={一系列的数组值},此时数组的大小就是{ }中与元素的个数
5. 二维数组
- 二维数组: 二维数组就是在一维数组上,多加一个维度。
- 二维数组定义方式:
- 数据类型 数组名[ 行数 ] [列数];
- 数据类型 数组名[行数][列数] = {{数据1,数据2,数据3},{数据4,数据5}};
- 数据类型 数组名[ 行数 ][列数] ={数据1,数据2,数据3,数据4};
- 数据类型 数组名[ ] [列数] = {数据1,数据2,数据3,数据4};
建议:以上4种定义方式,利用第二种更直观,提高代码的可读性;
- 实际上:二维数组在内存中是一行一行的存储。
5.1 二维数组的赋值
- 通过下标赋值
#include <iostream> //c++的导入
using namespace std;
int main () {
// 2行5列,数组中元素的类型是int
int ages[2][5];
// 遍历行下标。i,0,1
for(int i=0; i<sizeof(ages)/sizeof(ages[0]); i++) {
// 遍历列下标,就,0,1,2,3,4
for(int j=0; j<sizeof(ages[i])/sizeof(int); j++) {
cin>>ages[i][j];
}
}
for(int i=0; i<sizeof(ages)/sizeof(ages[0]); i++) {
// 遍历列下标,就,0,1,2,3,4
for(int j=0; j<sizeof(ages[i])/sizeof(int); j++) {
cout<<ages[i][j]<<"\t";// \t相当于4个空格
}
cout<<endl;
}
return 0;
}
2. 按元素类型
- 分行给二维数组赋值,即也是将所有数据写在一个{}中,在其内部,在把属于同一行的数据用{}括起来,数据之间用逗号隔开 。
- 对于每一行的元素也不必全部赋值,可以只给某一行的前几个元素赋值,如果对二维数组中间或前面行的所有元素都不初始化,但每一行对应的{}必须列出,即使里面没有任何数据;
- 如果对二维数组的最后行的所有元素都不初始化,则其对应的{}可以列出,也可以不列出,但最外层{}内的{}数量不能超过数组的行数。
int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
cout << a[i][j] << ' ';
}
}
6. 指针和引用
6.1 *指针
指针:指向元素在内存中的地址(内存地址的编号)
int/char/double/bool*varName,表示定义了一个可以指向类型为int/char/double/bool的元素的地址的指针
#include <iostream> //c++的导入
using namespace std;
int main() {
int age=5;
//取得age这个int类型的元素的地址,用int类型的指针的poninter指向age的地址
int *pointer=&age;
//解引用:修改指针指向的内存里的值。(修改age内存单元里的值为14 )
//操作这个元素的值,age也会跟着改变
*pointer=14;
return 0;
}
- 理解
int b=10;
int &a=b;//此时a,b,共享同一块内存单元,地址相同,
//引用相当于指针,但是把解引用给隐藏了。
a=14;//c操作a元素,b也会跟着改变
6.2案例理解
- 第一步
- 第二步
- 第三步
4. 第四步
- 第五步
7. #define
- 定义:#define 字符串1 字符串2
- 在后面每当遇见字符串1,就会被替换成字符串二,不可二次赋值。
#include <iostream> //c++的导入
using namespace std;
#define MaxSize 100
int main() {
cout<<MaxSize<<endl;
return 0;
}
#define是C++中的一个预处理器指令,用于定义一个常量或者作为宏使用。其语法为:#define macro-name replacement-text
其中,macro-name指定要定义的标识符名称,而replacement-text则是用macro-name替换的文本。
8. typedef 起别名
- 定义:typedef 某类型 字符串;
2. 两者定义变量等价的
3.案例