<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chen_dunyun的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chen_dunyun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chen_dunyun]]></copyright><item><title><![CDATA[双向循环链表]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/109074144</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/109074144</guid><author>chen_dunyun</author><pubDate>Wed, 14 Oct 2020 15:10:44 +0800</pubDate><description><![CDATA[循环与不循环区别
单向链表：只有一个指向下一个节点的指针。
优点：单向链表增加删除节点简单。遍历时候不会死循环；
缺点：只能从头到尾遍历。只能找到后继，无法找到前驱，也就是只能前进。
适用于节点的增加删除。
双向链表：有两个指针，一个指向前一个节点，一个后一个节点。
优点：可以找到前驱和后继，可进可退；
缺点：增加删除节点复杂，需要多分配一个指针存储空间。
适用于需要双向查找节点值的情况
下面讲解双向循环链表的一般写法：
#include&lt;stdio.h&gt;
#include&lt;malloc.]]></description><category></category></item><item><title><![CDATA[C语言链表操作]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/109046448</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/109046448</guid><author>chen_dunyun</author><pubDate>Tue, 13 Oct 2020 10:41:17 +0800</pubDate><description><![CDATA[关于链表的说明与应用
链表属于C语言数据结构，学了数组为什么要学习链表对数据进行操作，简而言之，效率问题。
下面代码中，主要写了创建链表、查找、删除、判断是否是循环链表等等，一些常用功能在这里进行了总结。
#include&lt;stdio.h&gt;
#include&lt;malloc.h&gt;
#include&lt;string.h&gt;
#include&lt;stdlib.h&gt;
#define OK 1
#define ERROR 0
#define ture 1
#define fa]]></description><category></category></item><item><title><![CDATA[TLV数据格式及解析]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/108594083</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/108594083</guid><author>chen_dunyun</author><pubDate>Tue, 15 Sep 2020 10:09:17 +0800</pubDate><description><![CDATA[TLV数据格式

几乎所有的需要在卡片和终端之间传送的数据都是TLV格式的. PBOC文档里并没有对TLV编码细节做具体说明, 而EMV的手册里虽有叙述，但并不详细. 我下面就要很详细的分析TLV的编码格式并给出相应的TLV解码的伪代码.
TLV是tag, length和value的缩写.一个基本的数据元就包括上面三个域. Tag唯一标识该数据元, length是value域的长度. Value就是数据本身了. 举个例子, 下面是一个tlv格式的AID（应用标识符）字节串”9F0607A000000003.]]></description><category></category></item><item><title><![CDATA[关于memmove函数的实现]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/108593159</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/108593159</guid><author>chen_dunyun</author><pubDate>Tue, 15 Sep 2020 09:39:33 +0800</pubDate><description><![CDATA[原型： 　void *memmove( void* dest, const void* src, size_tcount );

#include&lt;string.h&gt;
由src所指内存区域复制count个字节到dest所指内存区域。
src和dest所指内存区域可以重叠，但复制后dest内容会被更改。函数返回指向dest的指针。
Copies the values of num bytes from the location pointed by source to the memory bl.]]></description><category></category></item><item><title><![CDATA[对于指针传参的再一次简要的说明]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/108440879</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/108440879</guid><author>chen_dunyun</author><pubDate>Mon, 07 Sep 2020 09:14:56 +0800</pubDate><description><![CDATA[对于简单指针传参的说明
#include&lt;stdio.h&gt;
#include&lt;malloc.h&gt;
#include&lt;string.h&gt;


int InitStr(char *str);
int main()
{
	char *ptr = NULL;
	ptr = (char *)malloc(50);
	if(ptr==NULL)
	{
		return -1;
	}
//	ptr = "hello world!";
	printf("ptr = %s\n ",ptr)]]></description><category></category></item><item><title><![CDATA[指针传参深入研究]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/108263476</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/108263476</guid><author>chen_dunyun</author><pubDate>Thu, 27 Aug 2020 17:56:48 +0800</pubDate><description><![CDATA[1 关于C语言指针传参问题深入研究的结论
1.普通指针变量传参
当传入指针变量到另一个函数时，形参只是起到拷贝的作用，如果在形参上对这个指针变量动手脚，是改变不了这个指针变量所指向的内容，因为你地址都变了，看代码：
#include&lt;stdio.h&gt;
#include&lt;string.h&gt;
#include&lt;malloc.h&gt;

void InitP(char *p);

int main()
{
	char *p = NULL;
	p = (char *)malloc(5]]></description><category></category></item><item><title><![CDATA[C语言实现汉字的输出以及字库的应用]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/108224181</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/108224181</guid><author>chen_dunyun</author><pubDate>Tue, 25 Aug 2020 16:38:26 +0800</pubDate><description><![CDATA[C语言实现汉字的输出以及字库的应用
我用的是HZK16字库，可以自行网上下载
代码如下：
#include &lt;stdio.h&gt;  
#include&lt;windows.h&gt;
#define FONT_SIZE   (16)    /* 字体大小 */  
  
/* 
  获取汉字在汉字库中的索引位置 
  根据GB2312/GBK编码规则，汉字的低字节hz[0]是区码，高字节hz[1]是位码，汉字库从区位码0xa1a1开始存放汉字 
*/  
#define HZ_INDEX(hz)]]></description><category></category></item><item><title><![CDATA[C语言实现字符串在屏幕上滚动]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/108223765</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/108223765</guid><author>chen_dunyun</author><pubDate>Tue, 25 Aug 2020 16:29:06 +0800</pubDate><description><![CDATA[关于半个字符的描述使用与判断
一个汉字是由两个字符组成，避免输出时乱码，可以先判断传进来的字符是否为半个字符，代码如下：
int half_chn(char *info, int len)
{
    int i;
    for(i=0; i&lt;len; )
    {
        if(info[i] &gt;= 0x80)
            i += 2;
        else
            i++;
    }
    if(i == len)
        retur]]></description><category></category></item><item><title><![CDATA[C语言函数名、&函数名、*函数名]]></title><link>https://blog.youkuaiyun.com/chen_dunyun/article/details/108223571</link><guid>https://blog.youkuaiyun.com/chen_dunyun/article/details/108223571</guid><author>chen_dunyun</author><pubDate>Tue, 25 Aug 2020 16:14:18 +0800</pubDate><description><![CDATA[C语言函数名、取地址函数名、解引用函数名关系]]></description><category></category></item></channel></rss>