C++基础
程序入口、注释、变量、常量、关键字、标识符命名规则
-
程序入口
-
main是一个程序的入口
-
每个程序都必须有这么一个函数,有且仅有一个
#include<iostream> using namespace std; int main() { //在屏幕中输入hello word cout << "hello word" << endl; system("pause"); return 0; }
-
-
注释
//这是一个注释 /* 这是一个注释 还是一个注释 */
-
变量
-
变量的创建语法:数据类型 变量名 = 变量初始值
-
#include<iostream> using namespace std; int main() { int a = 10; cout << "abc = " << a << endl; system("pause"); return 0; }
-
-
常量
-
1.#define 宏常量: #define 常量名 常量值
-
2.const修饰的变量: const 数据类型 常量名 = 常量值
//定义一个宏常量 #define Day 7 int main() { //Day =14; 修改常量会报错 cout << "一个星期总共有:" << Day << "天" << endl; //const 修饰的变量 const int month = 12; //month =14; const修饰的变量也是常量 cout << "一年总共有" << month << "个月" << endl; system("pause"); return 0; }
-
数据类型
-
整型
-
1.标识符不可以是关键字
-
2.标识符是由字母、数字、下划线构成
-
3.标识符第一个字符只能是字母或者下划线
-
4.标识符区分大小写
-
//1.短整型
short num1 = 10;//2.整型 int num2 = 20; //3.长整型 long num3 = 30; //长长整型 long long num4 = 40;
-
-
sizeof关键字 : 统计数据类型所占内存大小
-
//1.短整型 short num1 = 10; //2.整型 int num2 = 20; //3.长整型 long num3 = 30; //长长整型 long long num4 = 40;
-
-
浮点型
-
cout << "short 所占内存大小为:" << sizeof(num1) << endl; cout << "int 所占内存大小为:" << sizeof(num2) << endl; cout << "long 所占内存大小为:" << sizeof(num3) << endl; cout << "long long 所占内存大小为:" << sizeof(num4) << endl;
-
-
字符型 :字符型变量用于显示单个字符
-
//创建 char ch = 'a'; cout << ch << endl; //3.字符型变量常见错误 char ch2 = "b"; //创建字符型变量时,要用单引号 char ch3 = 'abc'; //创建字符型变量时,单引号内只能有一个字符
-
-
转义字符型 :用于表示一些不能显示出来的ASCII字符
-
1.换行符:\n
-
2.反斜杠:\
-
3.水平制表符:\t
-
cout << "hello word\n"; //最后有转移字符不需要endl cout << "hello word"; //输出打印在一行 cout << endl; //相当于一个换行符
-
-
字符串型
-
//1.c风格字符串 //char 字串符名[] //等号后面 要用双引号 char str[] = "hello word"; cout << str << endl; //2.c++风格字符串 //包含一个头文件 #include<string> string str2 = "hello word2"; cout << str2 << endl;
-
-
布尔类型
-
true --真(本质是1)
false – 假(本质是0)
布尔类型只要是非零的值就是代表真
-
//创建bool数据类型 bool flag = true;
-
-
数据的输入
-
作用:用于从键盘获取数据
关键字:cin
语法: cin >> 变量 -
int a = 0; cout << "请给整型变量a赋值:" << endl; cin >> a; cout << "整型变量a=" << a << endl;
-
运算符
-
算数运算符
-
算术运算符 + - * / %
-
递增递减运算符 ++ –
-
//1.前置递增 int a = 10; ++a; //让变量加一 等价于 a = a +1 cout << "a = " << a << endl; //2.后置递增 int b = 10; b++; //让变量+1 cout << "b = " << endl; //3.前置和后置的区别 //前置递增 先让变量+1 然后进行表达式运算 int a3 = 10; int b3 = ++a3 * 10; cout << "a3 = " << a3 <<endl; cout << "b3 = " << b3 <<endl;
//后置递增 先进行表达式运算 后让变量+1 int a4 = 10; int b4 = a4++ * 10; cout << "a4 = " << a4 << endl; cout << "b4 = " << b4 << endl;
-
```
-
赋值运算符
- 用于将表达式的值赋值给变量
= += -= *= /=
- 用于将表达式的值赋值给变量
-
比较运算符
- 比较运算符
== != < > <= >=
返回结果为0 1 真假
- 比较运算符
-
逻辑运算符
- 根据表达式的值返回真值和假值
!非 &&与 ||或
- 根据表达式的值返回真值和假值
程序流程结构
-
顺序结构(从上而下)
-
选择结构
-
if语句
-
//单条件 if (score < 60) { cout << "你完了!!!" << endl; } //多行格式if语句 if (score < 60) { cout << "你完了!!!" << endl; } else if (score <= 70) { cout << "良!" << endl; } else if (score < 90) { cout << "牛!" << endl; } //多条件的if语句 if (score >60 && score<70) { cout << "加油!" << endl; }
-
嵌套if语句
-
if (score < 60) { cout << "你没及格!!" << endl; if (score < 50) { cout << "找个班上吧!" << endl; } else { cout << "要加油啊,差一点就及格啦!" << endl; }
-
三目运算符
-
语法: 表达式1 ? 表达式2 : 表达式3
解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果
如果表达式1的值为假,执行表达式3,并返回表达式3的结果 -
//创建三个变量 a b c //将a和b做比较,将变量大的值赋值给变量c int a = 10; int b = 20; int c = 0; c = (a > b ? a : b); cout << c << endl; //c++中三目运算符返回的结果是变量,可以继续赋值 (a > b ? a : b) = 100; //执行结果 b=100 cout << "a = " << a << endl; cout << "b = " << b << endl;
-
-
switch语句
-
结构清晰,执行效率高
-
判断是只能是整型或者字符型,不可以是一个区间
-
//1.提示用户给电影打分 cout << "请给电影进行打分" << endl; int score = 0; cin >> score; cout << "您打的分数为 " <<score<< endl; //2.根据用户输入的分数来提示用户最后的结果 switch (score) { case 10: cout << "您认为是经典电影" << endl; break; //退出当前分支 case 9: cout << "您认为是经典电影" << endl; break; case 8: cout << "您认为是电影非常好" << endl; break; case 7: cout << "您认为是电影非常好" << endl; break; case 6: cout << "您认为是电影一般" << endl; break; case 5: cout << "您认为是电影一般" << endl; break; default : cout << "您认为这电影是烂片" << endl; }
-
-
-
循环结构
-
while循环语句
-
int num = 0; while (num <= 9) { cout << num++ << endl;
-
-
do while循环语句
-
//do{循环语句} while(循环条件); //与while循环的区别在于 do..while会先执行一次循环语句,再判断循环条件 do { cout << num++ << endl; } while (num < 10);
-
-
for循环语句
-
for(起始表达式;条件表达式;末尾循环体){循环语句;}
-
for (int i = 0; i < 10; i++) { cout << i << endl; //执行顺序 int i=0 --> i <10 --> cout<<i<<endl; --> i++ }
-
-
嵌套循环
-
//利用嵌套循环实现星图 //打印一行星星 //外层循环 for (int i = 0 ; i <15; i++){ //内层循环 for (int i = 0; i < 15; i++) { cout << "* "; } cout << endl; //endl相当于换行符 }
-
-
-
跳转语句
-
break
- 用于跳出选择结构或者循环结构
-
continue
- 跳出此次循环,执行下一次循环
-
goto
-
跳转到标记处
-
cout << "2.xxxxxx" << endl; goto FLAG; //直接跳转到标记处 cout << "3.xxxxxx" << endl; cout << "4.xxxxxx" << endl; FLAG: cout << "5.xxxxxx" << endl; //34不会输出
-
-
数组
-
一维数组
-
一维数组定义的三种方式:
- 数据类型 数组名[数组长度];
- 数据类型 数组名[数组长度] = {值1,值2…};
- 数据类型 数组名[] = {值1,值2…};
-
一维数组数组名
1.可以统计整个数组在内存中的长度 int arr[5] = { 10,20,30,40,50 }; //获取整个数组在内存中的长度 cout << sizeof(arr) << endl; //获取数组中的元素在内存中的长度 cout << sizeof(arr[0]) << endl; cout << "数组中的元素个数是:" << sizeof(arr) / sizeof(arr[0]) << endl; //2.可以获取数组在内存中的首地址(默认十六进制) cout <<"数组首地址为:"<< int(arr)<< endl; //也可以写成(arr)int cout << "数组中的第一个元素的地址: "<<int(&arr[0]) << endl; //必须加& 不然输出的是元素的值 cout << "数组中的第二个元素的地址: " << (int)&arr[1] << endl; //数组名是常量,不可以进行赋值操作
-
-
二维数组
-
/*二维数组定义方式: 1.数据类型 数组名 [行数][列数]; 2.数据类型 数组名 [行数][列数] = {{数据1,数据2},{数据3,数据4}}; //推荐第二种 3.数据类型 数组名 [行数][列数] = {{数据1,数据2,数据3,数据4}}; 4.数据类型 数组名 [ ][列数] = {{数据1,数据2,数据3,数据4}};*/
-
//查看二维数组所占内存空间 int arr[2][3] = { {1,2,3}, {4,5,6} }; cout << "二维数组所占内存空间为:" << sizeof(arr) << endl; cout << "二维数组第一行占用内存为: " << sizeof(arr[0]) << endl; cout << "二维数组第一个元素占用内存为 ; " << arr[0][0] << endl; cout << "二维数组行数为 ; " << sizeof(arr) / sizeof(arr[0]) << endl; cout << "二维数组列数为 ; " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl; //2.获取二维数组首地址 cout << "二维数组首地址 ; " << int(arr) << endl; cout << "二维数组第一行首地址为 ; " << int(arr[0]) << endl; cout << "二维数组第二行首地址为 ; " << int(arr[1]) << endl; //访问具体元素的地址时要加& cout << "二维数组第一个元素首地址为 ; " << int(&arr[0][0]) << endl;
-
函数
-
定义以其调用
-
语法: 返回值类型 函数名(参数列表){ 函数体语句; return 表达式; }
-
int main() { //函数的引用 cout << add(2, 3) << endl; system("pause"); return 0; }
-
-
值传递
- 如果函数不需要返回值,声明的时候额可以写viod
- 做值传递的时候,函数的形参发生改变,并不会影响实参
-
函数的常见样式
- 1.无参无返
- 2.有参无返
- 3.无参有返
- 4.有参有返
-
函数的声明 (告诉编译器函数名称及如何调用函数)
- 声明可以写多次,定义只能有一次
- 提前告诉编译器函数的存在,可以利用函数的声明
-
函数的分文件编写
-
1.创建后缀名为.h的头文件
- 在头文件下新建一个后缀为.h的头文件
-
在头文件内写入函数的声明
-
#include<iostream> using namespace std; //函数的声明 void swap(int a, int b);
-
-
2.创建后缀名为.cpp的源文件
-
在源文件下创建后缀为.cpp的函数源文件
-
源文件中写函数的定义,以及关联头文件
-
//关联头文件 #include "swap.h" //函数定义 void swap(int a, int b) { int temp = a; a = b; b = temp; cout << "a= " << a << endl; cout << "b= " << b << endl; }
-
-
-
3.函数在需要被调用时需要关联函数的头文件(相当于import)
-
#include<iostream> using namespace std; #include "swap.h"
//函数的声明
void swap(int a, int b);
-
-
2.创建后缀名为.cpp的源文件
-
在源文件下创建后缀为.cpp的函数源文件
-
源文件中写函数的定义,以及关联头文件
-
//关联头文件 #include "swap.h" //函数定义 void swap(int a, int b) { int temp = a; a = b; b = temp; cout << "a= " << a << endl; cout << "b= " << b << endl; }
-
-
-
3.函数在需要被调用时需要关联函数的头文件(相当于import)
-
#include<iostream> using namespace std; #include "swap.h"
-
-