1、 用 函数指针 声明 一个变量时 ,需要注意:
(1)void (*fun)(long* p);//声明函数
fun dest;//此处fun是一个函数指针,是一个变量,不能用变量定义变量,所以会出错
(2)typedef void (*fun)(long *p);//此时,fun是一个函数指针类型
fun dest;//用类型定义变量当然可以啊
2、函数指针的 使用
(void(*)())0x100000 //含义: 将 0x100000强制成 一个函数指针
*( (void(*)())0x100000 ) () //含义: 通过函数指针 运行函数,即从0x100000地址处运行程序
3。 数组指针,函数指针数组,int (*a[10])(int),函数指针的调用: (*p)(a,b)
4、联合体union 计算大小,特点:变量公用空间,大小取决于最大的变量空间
5、int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param) 的函数。
6、
无符号 变量溢出: 清0
有符号溢出,正数溢出,继续自加,直到清0
7、对于#include
8、宏定义计算一个数组的大小:define NTBL(table) (sizeof(table)/sizeof(table[0]))
9、程序的局部变量存在于栈(stack) 中,全局变量存在于静态数据区中,动态申请数据存在于堆(heap)中。
10、printf(“%c”,(a)&(a-1)?’n’:’y’); // 判断是否为2的若干次幂
11、a++, 遇到;结束后或者 分号结束前 遇到下一个a++, 则值才会改变(为上一次a+1后的值)
数组: a[ 5]
a+1: 指向第二个元素
&a 和 a 等价
但是&a+1 和 a+1 不等价
数组: a++的写法,编译器会报错
12、当一个函数的参数是数组时,实际上编译器会把它当做指针去处理
13、对空指针使用free()是很危险的,且free()之后,不一定为null,成为野指针,要手动将其置null
14、字符串拼接函数:
strcat((char*)str1,(const char*)str2)
15、
C语言中 自带的 排序算法:
//冒泡排序
//两数交换不经过第三 变量



