一,数据类型:
- char //字符数据类型
-
short //短整型
-
int //整型
-
long //长整型
-
long long //更长的整型
-
float //单精度浮点型
- double //双精度浮点型
sizeof的单位是字节byte
sizeof(long)>=sizeof(int)
二,常量变量:
1.变量的分类
- 局部变量(大括号内部使用的)
- 全局变量(大括号外部使用的)
PS:当局部变量和全局变量同名时,局部变量优先使用
2.变量的作用域和生命周期
- 局部变量的作用域是变量所在的局部范围
- 全局变量的作用域是整个工程
变量的生命周期指的是变量的创建到销毁之间的一个时间段
- 局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束
- 全局变量的生命周期是整个程序的生命周期
3. 常量
C语言中常量分为以下几种:
- 字面常量
- const修饰的常变量(修饰之后的变量不能直接被改变,但本质上还是变量,所以叫常变量)
- #define定义的标识符常量
- 枚举常量(默认从0开始,依次递增)
4.字符串+转义字符
- 字符串的结束标志是\0的转义字符,计算字符串长度时\0是结束标志,不算做字符串内容
- 转义字符在需要转义的字符前面加上\
\ddd ddd表示1~3个八进制数字 \xdd dd表示2给十六进制数字
5.操作符
- 移位操作符:》《
移动的是二进制位
- 位操作符:
&按位与
| 按位或
^按位异或
~按(二进制位)位取反:把所有二进制中的数字1变成0,0变成1
- 原码,反码,补码
负数的计算
原码——>反码(符号位不变,其他按位取反)符号位是二进制中的第一位
反码——>补码(反码+1)
正整数:原码,反码,补码相同
- 条件操作符(三目操作符)
?:(a?b:c)
a成立,b计算,整个表达式的结构是b的结果
a不成立,c计算,整个表达式的结构是c的结果
6.常见关键字
- auto(是自动的 - 每个局部变量都是auto修饰的)
- extern(是用来申明外部符号的)
- register(寄存器关键字)
- signed(有符号的如:10,-20)
- unsigned(无符号的)
- union(联合体,共用体)
- void(无-空)
- typedef(类型重定义!)
- static(静态的!!!)
static修饰局部变量,改变了的局部变量的生命周期(本质上改变了变量的存储类型)
static修饰全局变量,使得这个全局变量只能在自己的源文件(.c)内部使用,其他源文件不能使用!在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但被static修饰之后变成了内部链接属性,其他源文件不能链接到这个静态的全局变量!
static修饰函数,使得函数只能在自己源文件使用,不能在其他源文件使用,本质上static是将函数的外部链接属性变成了内部链接属性(和static修饰全局变量一样!)
7.指针
- 内存
内存的编号是由电信号转换成数字信号:1和0组成的二进制序列。一个内存单元是一个字节
- 指针
int main()
{
int a = 10;//a在内存中要分配空间,4个字节
int * pa = &a;//pa是用来存放地址的,在C语言中叫指针变量
//* 说明pa是指针变量,int 说明pa执行的对象是int类型
return 0;
}
指针是用来存放地址的!指针的大小是相同的!指针需要多大空间取决于地址的存储需要多大空间
8.结构体