高级C+Linux编程基础指针&指针数组强制类型转换 int *p;*(char *)p;int *p1,*p2; int a[3]={1,2,3};p=a;a[0]-->1 *p-->1 p[0]a[1]-->*(p+1)-->p[1]*(a+1) a可理解为存储了本身地址的指针 *(a+1) ---> *(5640+4) 5640假定为一地址.结构体&共用体typedef struct A typedef作用:封装一结构体给其它程序使用. struct A{ {int a:6; 虽int型,但变量a只存6位,即占空间6位 char a;int b; char unused[3];char c; int b;}; 由于内存对齐(节省寻址时间)原理,些结构体占8个bytes };左侧的示例严格控制内存分配,防止编译时内存访问出错,让结构体更为紧凑...函数指针int fun(int,int); 声明一符号,两个int参数,一个int返回值..int(*pfun)(int,int); 函数指针..pfun=fun;pfun(a,b); 函数指针可指向多个函数 指针的灵活性Makefile入门Hello World !gcc -c hello.c --->hello.o 编译compilegcc -o hello hello.o ld(GNU linker连接器)过程 .o文件用于生成 .a .sogcc -o hello hello.c预编译:程序前面的#开头的部分.编译:程序的纯C代码..Make 常用工具,Makefile 三部分组成..规则(可理解为目标) 依赖 动作范例:EXEC=helloall:$(EXEC).oall下如果无动作留空$(EXEC):$(EXEC).ogcc -o $@ $< 注:前有一TAB格,$@ --- 指同一段的目标名.c.o:gcc -c $< $< --- 指一段的依赖名clean:rm -f $(EXEC) *.c