Welcome 微信登录

首页 / 操作系统 / Linux / 高级C+Linux编程基础

高级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