宏名
以#开头的行,
可出现在程序的任何位置,
通常每一个宏定义只能单独占一行,使用字符“\”可实现一个宏定义占用若干行
宏替换只是字符替换 ,注意宏只是字符替换不要多加括号
宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时带入指定的字符即可。
宏替换不占用运行时间
宏名一般用大写字母表示,
1.宏定义 #define<宏名>(<参数列表>)<宏体>
c程序提供的预处理功能之一。包括带参数的宏定义和不带参数的宏定义。
本程序的main函数开始,到main函数结束
若已定义x和y为double类型,且x=1,则表达式y=x+3/2的值是2.5
十六进制255 %x==ff
十六进制转十进制 按位乘权相加
十进制转十六进制 短除法
typedef不能定义变量,都是类型,已有类型 新类型名(别名)
不能创造新类型,是根据已有类型取别名
可以用新类型别名去定义变量
注意:包含了共同部分,提出来了,还要还回去,【10】,*POINT
构造结构体类型
用结构体类型去定义变量(结构体变量)
使用结构体变量
初始化,一对花括号{,,,}将各个成员以逗号分隔
结构体不能整体用,只能用成员
普通变量,指针变量,三种使用方法
链表--数据结构的线性表一章
插入删除很方便,链表是不连续的,既存放内容值,也存放了地址值,指向下一个元素
不用搬动大量元素数组,整体移动
但链表有个缺点,必须从头开始访问,中间只能往后,没有存储前一个元素的地址
用时申请不连续存储空间,不用时释放,动态管理机制,
链式存储(链表不连续) 顺序访问
顺序存储(数组连续)随机访问
32位系统下,指针变量永远只占4字节,所有指针变量在内存中分配的字节数相同
int *p1;
float *p2;
double *p3;
所存储的内容大小是不一样的,所得地址必须与指针类型相符合
sizeof(p1)
取地址运算符&,指针运算符*
void型不用加return
指针题画图,指针变量,得谁地址指向谁,*内容值或写值
指针变量定义且初始化后才能使用