数据类型存在的意义:给变量分配合适的内存空间
作用
:统计数据类型所占内存大小
语法
:sizeof(数据类型/变量)
注:INT_MAX (231−1) // INT_MIN(−231)
注:代码里3e2 = 3 * 10^2 // 2e-2 = 3 * 0.1^2
//VS会默认3.14为double类型,所以在将3.14赋值给float型的f1是需要多做一次数据类型转换
float f1 = 3.14;
//数字后加f效率会更高
float f1 = 3.14f;
注:float和double默认情况下,输出一个小数会显示出6位有效数字
注:字符型变量并不是把字符本身放在内存中储存,而是将对应的ASCII码
放入存储单元
注:ASCII—A:65 // a:97
‘\n’:换行 ‘\’:输出’\’
‘\t’:水平制表符(有助于在控制台出现对齐效果)(8个空格)
例:
除法运算(/):两个整数的结果一定是整数(不进行四舍五入,而是直接舍弃小数部分
),两个浮点型的结果是整数或浮点型。
取模运算(%):即取余数运算。两个浮点型数字不能进行取模运算。
注:除法运算和取模运算的被除数都不能为0
递增(减)运算符:前置先递增(减)后进行表达式运算。后置反之。
!:真变假,假变真 // &&:同真为真,其余为假 // ||:同假为假,其余为真
三目运算符:(表达式1?表达式2:表达式3)可以进行赋值。
int num=rand()%100
系统会随机生成0~99的数字,并赋值给num
(num只能接收一个随机数,并不是每次刷新都将一个新的随机数赋值给num)
注:要想防止随机数都一样,需要利用当前系统时间生成随机数!
//头文件
#include
//代码
srand((unsigned int)time(NULL));
包括break
(跳出循环)、continue
(不跳出循环)和goto
语句(不建议使用)(用于无条件跳转语句)
语法:goto
[标记](如果标记存在,会跳转到标记的位置)(标记可以与变量重名)
=》可以利用sizeof(arr) / sizeof(arr[0])
得到数组size
注:通过指针保存一个地址,即指针就是地址
注:指针通过号解引用的方式间接读取p指向的内容,即p=10。并可以对该块内容重新赋值。
代码部分:
注:空指针和野指针的内存(内容)不可以访问和更改
初始:
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 (×)
语法
:struct 结构体名{ 结构体成员列表 }
例:struct student{ string name; int age; int score; };
(1)三种定义结构体变量方法:
(2)定义结构体数组
(struct)student stuarr[3]={{“张三”,18,80},{“李四”,19,90},{“王五”,20,100}};
(3)定义结构体指针
例:一个教师对应辅导一位学生
值传递:不改变实参
注:形参开辟一片新的内存空间,将实参的内容复制过来。所以在函数中修改形参的值不会更改实参的值。
地址传递:改变实参
注:形参开辟一片新的内存空间,只用于存储指针变量,所以只需要4字节,而且在函数中修改形参的值会更改实参的值。
注:将函数中的形参改成指针,可以减少内存空间!而且不会复制一个新的副本出来!
注:case后一句太长可能会报错,debug的办法是把这段代码放在一对{}中。例: