本文章依据唐老师视频总结而来.
数据类型
数据类型是创建变量的模子
类型本质
变量本质
变量是一段实际连续存储空间的别名
程序通过变量来申请并命名存储空间
通过变量的名字可以使用存储空间
32个关键字:
auto
、int、double、long、char、short、float、unsigned、signed、
sizeof
、
extern
、
static
、
goto
、
if
、
else
、struct、
typedef
、
union
、
enum
、
switch
、
case、
break、
default
、
do
、
while
、
const
、
register
、
volatile
、return、
void
、
for
、
continue
.
define
、
include
带#是于处理指令
unsigned/signed
数据类型的最高位用于标识数据符号
- 最高位为1,表明这个数为负数
- 最高位为0,表明这个数为正数
有符号数用补码表示
- 正数的符号位为0
- 负数的符号位为1
无符号数用原码表示
- 无符号数默认为正数
- 无符号数没有符号位
固定长度无符号数 无限循环于MIN_VALUE与MAX_VALUE之间
MAX_VALUE + 1 -> MIN_VALUE
MIN_VALUE - 1 -> MAX_VALUE
只有整数类型能够声明unsigned变量
unsigned char
[0 -- 255
] 0-255之间无限循环
signed char
[-128 -- 127
] -128-127之间无限循环
tips
当无符号数与有符号数混合计算时,会将有符号数转换为无符号数后再进行计算,结果为无符号数
浮点数 float/double
浮点数在内存的存储方式为:符号位、指数、尾数
float 表示的数字之间不是连续的,存在间隙
float 只是一种近似的表示法,不能作为精确数使用
goto
高手潜规则:禁用goto
项目经验:程序质量与goto的出现次数成反比
void
void修饰
函数返回值和
参数
- 若函数没有返回值,应将其声明为void
- 若函数没有参数,应声明其参数为void
void修饰函数返回值和参数为了表示"无"
不存在void变量
C没有定义void究竟是多大内存的别名
void指针意义
- C语言规定只有相同类型指针才可以相互赋值
- void * 指针作为左值用于
接受任意类型指针
- void * 指针作为右值赋值给其他指针时需强制类型转换
sizeof
sizeof是编译器
内置指示符
,不是函数
sizeof用于计算
类型和变量
所占内存大小
sizeof值在
编译期
就已经确定
- 在编译过程中所有的sizeof将被具体的数值所替换
- 程序的执行过程与sizeof没有任何关系
strlen
strlen是函数,在
运行时才能确定
strlen用于计算
相应实体实际长度大小
字符串计算:返回字符串所包含的字符数目,
不包含结束标志空字符,即'\0'
strlen返回值是用无符号数定义的,相减不可能产生负数
< 一条语句实现strlen >
小结
sizeof是内置指示符,只运行于编译期
strlen是函数,只运行于运行期