随笔分类 -  C

c programs.
c语言符号常量与常变量的区别?
摘要:定义符号常量:#define PI 3.1415926 //注意后面没有分号定义常变量 :const float PI=3.1415926;区别: 常变量:变量的特征是存在一个以变量名命名的存储单元,在一般情况下,存储单元中的内容是可以变化的。而对于常变量,在变量的基础上加了一个限定:存储单元中的内... 阅读全文

posted @ 2015-11-21 19:43 liweilijie 阅读(1239) 评论(0) 推荐(0)

c语言输出4*5的数列?
摘要:1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20输出上面的数列,用c实现的代码:int main(){ int i, j; for (i = 1; i 阅读全文

posted @ 2015-11-21 19:42 liweilijie 阅读(615) 评论(0) 推荐(0)

c语言 变量的存储类别以及对应的内存分配?
摘要:1.变量的存储类别从变量值存在的角度来分,可以分为静态存储方式和动态存储方式。所谓静态存储方式指在程序运行期间由系统分配固定的存储空间的方式(程序开始执行时分配,在程序完毕时释放,在程序过程中它们占据国定的存储单元,而不是动态分配和释放)。而动态存储方式在运行期间根据需要进行动态存储方式(在程序过程... 阅读全文

posted @ 2015-11-21 19:42 liweilijie 阅读(998) 评论(0) 推荐(0)

c printf打印格式
摘要:关于小数点位数的举例:#include /* 当fahr=0,20,....300时,打印华氏温度与摄氏温度对照表 */int main(int argc, char *argv[]){ float fahr, celsius; int lower, upper, step; lower = 0; ... 阅读全文

posted @ 2015-11-21 19:34 liweilijie 阅读(264) 评论(0) 推荐(0)

把大象放进冰箱需要几步?
摘要:把大象放进冰箱需要三步:一,把冰箱门打开;二,把大象放进去;三,把冰箱门关上做任何事情有次序的做,一步一步来就可以了。 阅读全文

posted @ 2015-11-21 19:31 liweilijie 阅读(1490) 评论(0) 推荐(0)

c语言编译执行过程
摘要:认识C编译执行过程认识C编译执行过程,是C学习的开端。简单说C语言从编码编译到执行要经历一下过程:C源代码编译---->形成目标代码,目标代码是在目标机器上运行的代码。连接---->将目标代码与C函数库相连接,并将源程序所用的库代码与目标代码合并,并形成最终可执行的二进制机器代码(程序)... 阅读全文

posted @ 2015-11-21 19:30 liweilijie 阅读(311) 评论(0) 推荐(0)

gcc编译 汇编 选项
摘要:gcc生成main.out的步骤分解:main.c-----(-S 编译)-------->main.s-------(-c 汇编)------->main.o(指令码)-------(连接)----->main.out| ^| |(-E ) ... 阅读全文

posted @ 2015-11-21 17:23 liweilijie 阅读(310) 评论(0) 推荐(0)

static才是对代码的提升
摘要:static才是对代码的提升static的作用有如下三条:1):隐藏。当编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A' // global variablevoid msg(){ ... 阅读全文

posted @ 2015-11-21 17:22 liweilijie 阅读(167) 评论(0) 推荐(0)

c 可变参数(variable argument)的原理及使用
摘要:本文主要介绍可变参数的函数使用,然后分析它的原理,程序员自己如何对它们实现和封装,最后是可能会出现的问题和避免措施。VA函数(variable argument function),参数个数可变函数,又称可变参数函数。C/C++编程中,系统提供给编程人员的va函数很少。*printf()/*scan... 阅读全文

posted @ 2015-11-21 17:22 liweilijie 阅读(588) 评论(0) 推荐(0)

何为命名空间
摘要:何为命名空间?比如结构体的成员名和变量名不在同一命名空间中,但枚举的成员名却和变量名在同一命名空间中,所以会出现命名冲突。命名空间(namespace) 表示标识符(identifier)的上下文(context)。 一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。 这样,在... 阅读全文

posted @ 2015-11-21 17:20 liweilijie 阅读(487) 评论(0) 推荐(0)

最冤枉的关键字----sizeof
摘要:一、常年被人误认为函数。sizeof 是关键字不是函数,其实就算不知道它是否为32 个关键字之一时,我们也可以借助编译器确定它的身份。看下面的例子: int i=0;A),sizeof(int); B),sizeof(i); C),sizeof int; D),sizeof i;毫无疑问,32 ... 阅读全文

posted @ 2015-11-21 17:19 liweilijie 阅读(202) 评论(0) 推荐(0)

int (*(*fp)(void *))[10]; 指向函数的指针类型
摘要:int (*(*fp)(void *))[10]; //这个类型用typedef分解出来// 第一步:此指针是一个指向函数T1的指针typedef int (*T1(void *))[10];T1 *fp;// 第二步:T1 是一个函数,返回值是T2,参数为(void *)typedef int (... 阅读全文

posted @ 2015-11-21 17:18 liweilijie 阅读(740) 评论(0) 推荐(0)

typedef 深入剖析
摘要:typedef是一个我们常常会用到的关键字,而这个关键字有许多陷阱或者说许多不为我们深入理解的地方。很多书上都是很简单地一笔代过,并没有真正地让我们理解这个关键字。本文对其进行详细地说明。综合网络上找到的资料对其进行分析,这其中会涉及到一些其他c方面的内容(比如指针,指向函数的指针,编译时候数据类型... 阅读全文

posted @ 2015-11-21 17:17 liweilijie 阅读(215) 评论(0) 推荐(0)

函数式宏定义用do...while(0)的好处
摘要:函数式宏定义经常写成这样:#define device_init_wakeup(dev, val) \ do { \ device_can_wakeup(dev) = !!(val); \ device_set_wak... 阅读全文

posted @ 2015-11-21 17:16 liweilijie 阅读(513) 评论(0) 推荐(0)

c可变参数函数
摘要:C函数要在程序中用到以下这些宏:void va_start( va_list arg_ptr, prev_param );type va_arg( va_list arg_ptr, type );void va_end( va_list arg_ptr ); va_list:用来保存宏va_star... 阅读全文

posted @ 2015-11-21 17:16 liweilijie 阅读(164) 评论(0) 推荐(0)

标准IO库函数复习
摘要:打开文件,打开文件一定要成对写,养成好习惯很重要。比如 fopen()fclose fopen()/* fopen() */FILE *fopen(const char *path, const char *mode);FILE *fdopen(int fd, const char *mode);F... 阅读全文

posted @ 2015-11-21 17:15 liweilijie 阅读(203) 评论(0) 推荐(0)

errno 与 perror()/strerror()函数
摘要:errno是个全局的int型变量,当调用一个系统函数时不管成功不成功都有可能改变errno的值。但只有不成功时errno的值才是有意义的。如果要真的想用errno进行多次打印,刚可以先将其缓存一下。下面的例子:#include #include #include #include int main(... 阅读全文

posted @ 2015-11-21 17:15 liweilijie 阅读(234) 评论(0) 推荐(0)

双向链表
摘要:双向链表简介。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。双向链表更快速的查找与遍历整个链表。所以我们很少用单链表了。/* doublelin... 阅读全文

posted @ 2015-11-21 17:14 liweilijie 阅读(125) 评论(0) 推荐(0)

单向链表实现
摘要:单向链表单链表有一个头节点head,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从链表的头找起,后续节点... 阅读全文

posted @ 2015-11-21 17:14 liweilijie 阅读(652) 评论(0) 推荐(0)

lseek()函数
摘要:lseek()有个特殊的用途,确定文件是常规文件还是设备。off_t currpos;ourrpos = lseek(fd, 0, SEEK_CUR);if (ourrpos == -1){ printf("this is drive file");}这种方法用来确定文件或者设备是否可以设置偏移量... 阅读全文

posted @ 2015-11-21 17:13 liweilijie 阅读(424) 评论(0) 推荐(0)

导航