设为首页 加入收藏

TOP

高级C+Linux编程基础
2014-11-24 01:34:54 来源: 作者: 【 】 浏览:0
Tags:高级 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 编译compile


gcc -o hello hello.o ld(GNU linker连接器)过程 .o文件用于生成 .a .so


gcc -o hello hello.c


预编译:程序前面的#开头的部分.


编译:程序的纯C代码..


Make 常用工具,Makefile 三部分组成..


规则(可理解为目标) 依赖 动作


范例:


EXEC=hello


all:$(EXEC).o


all下如果无动作留空


$(EXEC):$(EXEC).o


gcc -o $@ $< 注:前有一TAB格,$@ --- 指同一段的目标名


.c.o:


gcc -c $< $< --- 指一段的依赖名


clean:


rm -f $(EXEC) *.c


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇经验分享:对Java中的线程感想 下一篇Linux核心部件Linux Kernel 2.6.2..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: