
C语言
文章平均质量分 71
Hokeo
这个作者很懒,什么都没留下…
展开
-
断言(ASSERT)的用法
断言(ASSERT)的用法 我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正转载 2014-02-23 18:47:27 · 635 阅读 · 0 评论 -
全局变量和静态变量
变量可以分为全局变量、静态全局变量、静态局部变量和局部变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。全局变量和静转载 2013-10-15 15:28:56 · 847 阅读 · 0 评论 -
const和define的区别
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。原创 2013-10-29 20:39:15 · 607 阅读 · 0 评论 -
单链表反转C语言实现
typedef struct node{ int num; struct node *next;}Node,*pNode;pNode CreatLinkList(int a){ pNode p; pNode q; p = q = (pNode)malloc(sizeof(Node)); p->num = a; while (a--) { p->next = (原创 2014-03-01 19:19:12 · 2234 阅读 · 0 评论 -
常见字符串函数实现
1. strlenint strlen(const char * string){ assert(string != NULL); int lenth = 0; while(*string++) { lenth++; } return lenth;}2. strcatchar * strcat(char *原创 2014-06-25 22:27:08 · 632 阅读 · 0 评论 -
单链表插入c语言实现
int list_insert(Node **linkp, int newValue){ Node *current; Node *newNode; while (((current = *linkp) != NULL) && (current->value < newValue)) { linkp = &(current->link); } newNode = (No原创 2014-06-28 10:49:26 · 1130 阅读 · 0 评论 -
c 结构体之位域(位段)
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位转载 2014-07-19 16:22:44 · 686 阅读 · 0 评论 -
const和volatile
const和volatile放在一起的意义在于:(1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心;(2)另一个程序段则完全有可能修改,因此编译器最好不要做太激进的优化。“const”含义是“请做为常量使用”,而并非“放心吧,那肯定是个常量”。“volatile”的含义是“请不要做没谱的优化,这个值可能变掉的”,而并非“你可以修转载 2014-06-15 14:40:22 · 628 阅读 · 0 评论