C 语言

基础

1.5.1 C语言基础.md

 

 

gcc -E helloworld.c -o helloworld.i

图源未知

 

 

C语言宏定义和几个坑

http://gcc.gnu.org/onlinedocs/cpp/Macros.html

 

函数指针

C语言-函数指针(Function Pointer)及进阶

 

c语言里,数据存放的地方由指针/内存决定,数据大小由类型决定

也就是说  (地址值)数据所在起始点+(类型)数据大小,共同组成了c语言的数据

 

前置知识:

(void *) 是通用数据类型,表示只有地址 即数据起始点,而数据大小为0。目的是方便使用时直接类型转换。如 声明void * p;  当使用 int_data = *((int *)p) 时,即可把p的数据按照int格式(数据大小为32bit)读出来。 char_data = *((char *)p); 即把p按照char 的格式读出来。在需要操作时进行任意类型转换,这样就实现了通用

 

Linux2.6 里的函数指针用法

 

这是一个函数指针, ((void (*) (入参类型1,入参类型2,入参类型n)) 函数名)

调用时候是  指针(参数1,参数2,参数n);

 

可以是 

tmp->free(addr, dummy);

或者不使用free这个成员,而直接使用该指针:   ((void (*) (参数1,参数2,参数n)) 函数名)(参数1,参数2,参数n);

((void (*)(void *, int)) my_free_page)(addr, dummy);
 
关于函数指针,C Primer Plus 第五版中文版的 14.14 函数和指针 有提到
若有误,请指正!!!
 

三目运算符

x?:y
等价于
x?x:y
 

VC++版的c

C语言是微软家的第二 公 民,但由于开发Windows程序也需要和微软打交道,所以...
 
 
 
 
 

推荐第三方库

简单的:

Mongoose    用c写web服务器、DNS服务等等,可用这个库

 

复杂的:

Npcap           可操作底层数据包的网络库

posted @ 2019-11-08 13:23  蓝天上的云℡  阅读(312)  评论(0编辑  收藏  举报