黑马课程C++笔记 | 基本数据类型,函数分文件编写,const修饰指针等易忘知识点
1.数据类型
数据类型存在的意义:给变量分配合适的内存空间

2.sizeof关键字
作用:统计数据类型所占内存大小
语法:sizeof(数据类型/变量)
3.整型

- INT_MAX (231−1) // INT_MIN(−231)
- 代码里3e2 = 3 * 10^2 // 2e-2 = 3 * 0.1^2
4.浮点型
//VS会默认3.14为double类型,所以在将3.14赋值给float型的f1是需要多做一次数据类型转换
float f1 = 3.14;
//数字后加f效率会更高
float f1 = 3.14f;
- float和double默认情况下,输出一个小数会显示出6位有效数字
5.字符型
- 字符型变量并不是把字符本身放在内存中储存,而是将对应的ASCII码放入存储单元
- ASCII---A:65 // a:97
6.转义字符
‘\n’:换行
‘\\’:输出’\’
‘\t’:水平制表符(有助于在控制台出现对齐效果)(8个空格)
例:
12\t输出12+6个空格。
1234567\t输出1234567+1个空格。
12345678输出12345678+0个空格(前三行对齐,因为数字个数(0,8])。
123456789输出123456789+7个空格。
12345678999输出12345678999+5个空格。(后两行对齐,因为数字个数(8,16])
7.运算
-
除法运算(/):两个整数的结果一定是整数(不进行四舍五入,而是直接舍弃小数部分),两个浮点型的结果是整数或浮点型。 -
取模运算(%):即取余数运算。两个浮点型数字不能进行取模运算。 -
递增(减)运算符:前置先递增(减)后进行表达式运算。后置反之。 -
!:真变假,假变真 // &&:同真为真,其余为假 // ||:同假为假,其余为真 -
三目运算符:(表达式1?表达式2:表达式3)可以进行赋值。
除法运算和取模运算的被除数都不能为0
8.结构
-
顺序结构
-
选择结构:if…else // switch
- switch:缺点->判断时只能是整型或字符型,不可以是一个区间。优点->结构清晰,执行效率高。
-
循环结构:while // do…while // for
- 区别:do…while会先执行一次循环语句,再判断条件
9.随机数
int num=rand()%100
- 系统会随机生成0~99的数字,并赋值给num
(num只能接收一个随机数,并不是每次刷新都将一个新的随机数赋值给num)
*注:要想防止随机数都一样,需要利用当前系统时间生成随机数!
//头文件
/#include<ctime>
//代码
srand((unsigned int)time(NULL));
10.跳转语句
包括break(跳出循环)、continue(不跳出循环)和goto语句(不建议使用)(用于无条件跳转语句)
语法:goto [标记](如果标记存在,会跳转到标记的位置)(标记可以与变量重名)

11.数组

- 可以利用sizeof(arr) / sizeof(arr[0]) 得到数组size
12.函数的分文件编写
- 分文件编写后:
1.swap.h

2.swap.cpp

3.main.cpp

- 分文件编写前:
swap.cpp

13.指针

- 通过指针保存一个地址,即指针就是地址
- 指针通过号解引用的方式间接读取p指向的内容,即p=10。并可以对该块内容重新赋值。
代码部分:

- 空指针和野指针的内存(内容)不可以访问和更改
14.const修饰指针
初始:
int a = 10;
int b = 20;
-
常量指针
const int *p = &a;
注:指针的指向可以修改,但指针指向的值不可以修改
=》p = 20 (×)
=》p = &b (√) -
指针常量
int * const p = &a;
注:指针的指向不可以修改,但指针指向的值可以修改
=》p = 20 (√)
=》p = &b (×) -
const即修饰指针又修饰常量
const int * const p = &a;
注:指针的指向和指针指向的值都不可以修改
=》p = 20 (×)
=》p = &b (×)
15.传值
- 值传递(不改变实参)

- 利用指针传值(地址传递,改变实参)

- 利用&传值(引用传递,改变实参)

16.结构体
语法:struct 结构体名{ 结构体成员列表 }
例:struct student{ string name; int age; int score; };
三种定义结构体变量方法:
- 先初始化(struct)student s1;
再对s1赋值s1.name=“张三”; s1.age=18; s1.score=90; - 一句话初始化并赋值(struct)student s2= {“李四”, 19, 80};
- 在定义结构体同时定义结构体变量struct student{ string name; int age; int score; }s3;
再在main函数中对s3赋值
注:
-
定义结构体数组
(struct)student stuarr[3]={{“张三”,18,80},{“李四”,19,90},{“王五”,20,100}}; -
定义结构体指针
![]()
17.结构体嵌套结构体
例:一个教师对应辅导一位学生

18.结构体中值传递和地址传递
- 值传递:不改变实参
形参开辟一片新的内存空间,将实参的内容复制过来。所以在函数中修改形参的值不会更改实参的值。

- 地址传递:改变实参
形参开辟一片新的内存空间,只用于存储指针变量,所以只需要4字节,而且在函数中修改形参的值会更改实参的值。
将函数中的形参改成指针,可以减少内存空间!而且不会复制一个新的副本出来!

19.switch语句
*注:case后一句太长可能会报错,debug的办法是把这段代码放在一对{}中。例:



浙公网安备 33010602011771号