![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pure c
文章平均质量分 52
llxxlx1990
这个作者很懒,什么都没留下…
展开
-
assert函数使用
assert()函数用法总结assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程转载 2014-02-03 09:50:56 · 363 阅读 · 0 评论 -
自我扩展—如何判断一个指定的节点是否是在带环链表的环内还是环外!
按照常规来思考—— 一步一步走能不能遇到自己,遇到自己在环内;遇不到在环外。可是如果在环外的按照前面的思想,难免就进入了死循环 。所以我们不妨换一个思路 :我们就从这个节点开始指定2个指针 :一个走2步 一个 走 一步;2步的每走一次都判断一次 它自己以及它的下一个节点是否和指定节点相同 如果和第一步指针相遇之前就和指定节点相同了必然是在环内 ; 如果是在环外通过和一步指针相遇来结束循原创 2014-03-16 21:49:05 · 449 阅读 · 0 评论 -
free函数——内存释放
既然有分配,那就必须有释放。不然的话,有限的内存总会用光,而没有释放的内存却在空闲。与 malloc 对应的就是 free 函数了。free 函数只有一个参数,就是所要释放的内存块的首地址。比如上例:free(p);free 函数看上去挺狠的,但它到底作了什么呢?其实它就做了一件事:斩断指针变量与这块内存的关系。比如上面的例子,我们可以说 malloc 函数分配的内存块是属于 p 的,转载 2014-03-15 21:43:07 · 1189 阅读 · 0 评论 -
查找一个字符串中最大长度的重复子串,例如abcdab 中ab为最大重复字串 长度为2
大体思路就是使用3个指针q temp str, temp用来保存当前查找的开始位置;q始终指向temp的下一个位置,为了在将目前最大重复子串保存到data数组时候不丢失本次开始查找的位置所以使用str指针用来保存目前查找到的max子串的起始位置在调试过程中发现一个bug;段错误 ;原因是在初始化data时候想都没想就把data数组写成 char *data = p ;这样子就把data指向到了原创 2014-03-04 17:31:03 · 610 阅读 · 0 评论 -
网络字节序和主机字节序
大家都知道的!!!大端小端字节序转换我们一般使用固有的htonl或htons等宏和移位进行解决:今天无意百度了下其他方法,发现了一个特别有意思的解决方法:int bigtolittle(int a){ union{ int i; char c[4]; }u,r;原创 2014-03-05 15:42:21 · 396 阅读 · 0 评论 -
位段使用说明
1)位段成员的类型必须指定为unsigned或int类型。(2) 若某一位段要从另一个字开始存放,可用以下形式定义:unsigned a:1;unsigned b:2;一个存储单元unsigned:0;unsigned c:3;另一存储单元a、b、c应连续存放在一个存储单元中,由于用了长度为0的位段,其作用是使下一个位段从下一个存储单元开始存放。因此,只将a、b存储在一个存转载 2014-02-02 23:35:51 · 526 阅读 · 0 评论 -
void * 在gcc中被看做char *处理,即void *p; p++;实际加1,而不是加整形的4或者long型的8)
void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如: int *pint; void *pvoid; pvoid = pint; /* 不过不能 pint = pvoid; */ 如果要将转载 2014-02-02 18:54:11 · 991 阅读 · 0 评论