C/C++ Learning

您正在查看: 编程语言 分类下的文章

linux多线程电梯小程序实例

源码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> #include <time.h> #include <sys/time.h> #include <unistd.h> typedef str...阅读全文

do{}while(0)用法详解

1、定义复杂的宏以避免错误 do{...}while(0)在C中是唯一的构造程序,让你定义的宏总是以相同的方式工作,这样不管怎么使用宏(尤其在没有用大括号包围调用宏的语句),宏后面的分号也是相同的效果。 示例 #define foo(x) bar(x); baz(x) foo(wolf);等价于bar(wolf); baz(wolf); if(condition)foo(wolf);等价...阅读全文

GNU C之内存对齐

四种改变编译器默认对齐方式的方法:(1)使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。(2) 使用伪指令#pragma pack (),取消自定义字节对齐方式。(3)__attribute((aligned (n))),让所作用的结构成员对齐在n字节自然边界上。如果结构中有成员的长度大于n,则按照最大成员的长度来对齐。(4)__attribute__ ((packe...阅读全文

C复杂函数声明

右左法则:首先从最里面的未定义的标识符看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。1、实例int (*func)(int *p);首先找到那个未定义的标识符,就是func,它的外面有一对圆括号,而且左边是一个号,这说明func是一个指针,然后跳出这个圆括号,先看右边,也是一个圆括号,这说明(...阅读全文

常见字符串处理库函数实现

1.strchr2.strstr3.strcat4.strcpy5.strncpy6.strcmp7.strncmp8.atol9.atoisize_t类型 typedef unsigned int size_t; <h3 id="1">1、strchr</h3> /*** *char *strchr(string, c) - se...阅读全文

jQuery顶部按钮实现

http://www.scrolltotop.com/国外的一个网站,提供多达几十种的按钮实现,很好的参考!如下:阅读全文

字符串匹配-BruteForce暴力匹配

BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。算法思想:1、依次从主串的首字符开始,与模式串逐一进行匹配;2、遇到失配时,则移到主串的第二个字符,将其...阅读全文

正确的使用snprintf

1、原型 #include <stdio.h> int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(c...阅读全文

GNU结构体中的0长数组使用

在标准 C 和 C++ 中,不允许用 0 长度数组,但在 GNU C 中,却可以定义 0 长度数组;struct line { int length ; char contents[0]; }; 0 长度数组不占有空间,从打印 sizeof (struct line) 可以看到这个结构体的长度为 4,这 4 字节空间属于整型量 length 。那么结构体里最后的 0 长度...阅读全文

linux内核list.h之链表hlist

1、数据结构//hash桶的头结点 struct hlist_head { struct hlist_node *first;//指向每一个hash桶的第一个结点的指针 }; //hash桶的普通结点 struct hlist_node { struct hlist_node *next, **pprev; }; next指向下一个结点的指针 pprev指向上一个结点的ne...阅读全文