const int *a:指向const int型的指针, a指向的值不可改变(*a)++可以,但a指向的地址可以改变a++不可以 *a取值 a取地址
int* const a:是指向int的const指针,*a可以改写,a不可改写
少用全局变量,会阻碍函数的循环
内存空间只分配给变量,不分配给类型
结构体struct:不可重名,但可以有无名结构体,在定义时必须定义所有变量 成员也可以是指针,指向结构体时只能指向自己 整型指针才能指向结构体变量成员,结构体指针不行 结构体变量不能作为整体输入输出,只能对各个成员分别进行输入输出
访问成员变量的三种:stu.num (*p).num p->num p->num++是先取num值然后自加 ++p->num是先使num值自加
数组名不能作为左值,给数组赋值只能用字符串拷贝strcpy (stu1.name,“li ming");
指名初始化只能在花括号中进行,可乱序
位置初始化在结构体右括号与分号间,按定义时成员顺序初始化
固定长初始化在初始化时定义全部初始值或给定大小
多维数组只能省略第一个下标
字对齐:有整型变量时,分配内存按4的整数倍分配,后一变量能存放在前一变量的剩余空间中,多余的空间造成内存空洞
半字对齐:有短整型时,分配内存按2的整数倍分配
共用体union:几个不同成员共用一段内存
cpu存取地址从低地址开始,不同cpu存放顺序不同 大端字节序:高位存在低地址位
(网络字节序)顺序存放 小端字节序:低字节位存放在低地址位 逆序存放
字符串没有字节序概念
枚举型enum:定义时必须给定枚举表,表内元素叫枚举常量,不赋值时按默认规则:第一个枚举常量未显式初始化时值为0,后一个枚举常量值是前一个加一 可以避免幻数 作为switch标签(开关语句)switch跟控制(整型)表达式 case跟整型常量表达式 第一次匹配完表达式后会顺序执行语句列表,除非遇到break跳出 default 可省,为保持完整一般不省 位置不固定但末尾也要加break
#开头:预处理命令
宏定义:宏名 宏体 中间以一空格相隔 宏函数不需要参数类型,只需要参数名 宏定义是简单的字符转换,不做运算不做语法分析 带参数的宏展开要替换两次,1用实参换形参,2用形参换宏体里的参数
循环while for:初始化表达式,条件表达式,修正表达式 语句可以省 空语句 但必须有两个分号,功能不能省
死循环 while(1) for(;;)
ab交换 a=a+b; b=a-b; a=a-b;
a=a^b; b=a^b; a=a^b;
t=a; a=b; b=a;
位运算:
&:按位与:同1得1 否则为0 保留某些位(对应1) 其余位清零
|:按位或:同0得0,否则为1 对某些位(对应1)置一,保留其余位
^:按位异或:相同为0,不同为1 对某些位(对应1)取反,其余位不变
~:按位取反:各位反转 间接的构造一个数,增强可移植性
<<:按位左移:左移一位乘二
>>:按位右移:负数 补0的”逻辑右移“ 补1的”算术右移“
2022/1/21学习笔记
最新推荐文章于 2024-08-21 20:44:22 发布