1个字节(byte)=8个比特(bit)
变量:
局部变量: {}中的变量
全局变量: {}外的变量
生命周期:
局部变量:进入作用域生命周期开始,出作用域生命周期结束
全局变量:整个程序的生命周期
常量:
字面常量:
const修饰的常变量:定义不能被改变的变量 (如创建数组时 数组大小需要为一个常量 但使用const不能完成)
#define定义的标识符常量:
枚举常量: 定义枚举常量然后使用
字符串:
由“”引起来的一串字符,字符串的结束标准是\0的转义字符,计算字符串长度(strlen())时\0为结束,不算做字符串内容(不计算在长度内)
而sizeof()计算的是所占空间的大小
转义字符:
使用\
\ddd 1-3个八进制的数字 如\327
\xdd 2个十六进制的数字 如\x6A
注释:
//和/* */
函数:
使用前要先声明
数组:
一组相同类型的元素的集合
操作符:
算术操作符:+ - * / %
移位操作符:>> <<(本质是移动的是二进制位)
位操作符:& ^ |(按位与、异或、或)
赋值操作符:= += -= *= /= ^= >>= <<=
单目操作符:
!逻辑反操作(只关注真假 0与非0)
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(计算的是变量所占的内存空间 以字节为单位)
~ 对一个数的二级制按位取反(整数在内存中存储的是二进制表示的补码)
– 前置或后置–
++ 前置或后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换
关系操作符: > >= < <= != ==
逻辑操作符: && 逻辑与 || 逻辑或 (结果为真或假)
条件操作符(三目操作符): exp1 ? exp2 :exp3 (1为真,执行2;1为假,执行3)
逗号表达式:exp1,exp2,exp3,… (从左向右依次计算,但整个表达式的结果是最后一个表达式的结果)
下标引用、函数调用和结构成员:
[] () . ->
常见关键字:
auto(c语言中局部变量就是自动变量 一般省略) break case char const continue default do double else enum extern(使用extern声明一下来自外部的变量、函数 即可使用) float for goto(不建议使用) if int long register(寄存器关键字 可以建议把变量的值放入寄存器中) return short signed(有符号的) sizeof static(静态的) struct switch typedef(类型定义) union(联合体/共用体) unsigned void(空类型) volatile while
static:
用static修饰局部变量,其生命周期变为和整个程序一样长,即在出其作用域时不会被销毁,其作用域并不会改变
用static修饰全局变量,改变了全局变量的作用域,其只能在自己所在的源文件中使用
用static修饰函数,同样改变了其作用域,其只能在自己所在的源文件中使用
static修饰的变量可以被修改,因为只要是变量就可以被修改,而且它会保持最新的值
#define定义常量和宏:
#define MAX 100;//常量
#define ADD(X,Y) ((X)+(Y)) ;//宏
指针:
32位电脑有32根物理电线,可以产生电信号并转换为数字信号,即可以产生512MB的内存地址,一个内存单元大小是一个字节(byte),每个内存单元都有一个编号
创建一个int变量a,要向内存申请4个字节的空间,可以用&(取地址操作符)得到变量a的地址
要存放地址,就要创建一个指针变量,一个地址的大小是4个字节(32位),即指针变量的大小也是4个字节(64位则为8个字节)
即:指针变量就是用来存放地址的
如 int * p=&a;//int表明p指向的是整型 *表明p是指针变量
在指针眼里,什么都是地址
*p=11;// *是解引用操作符 则是给a赋值为11
结构体:
结构体使得c有能力描述复杂类型
. 结构体对象.结构体成员 -> 结构体指针->结构体成员