
C/C++
TYW----子曰小玖
人生最重要的不是所在的位置,而是所朝的方向。
展开
-
十六进制字符串转换为ascii字符串
char *AsciiToChar(char *asc,char str[]) //只转换大写{int i=0,n=0,len;char cTemp[1024];memset(cTemp,0x00,sizeof(cTemp));strcpy(cTemp,asc);len=strlen(cTemp);for(i=0;i<len;i+=2){if(('0'<=cTemp[i]&&cTemp[i]<='9')&&('0'<...原创 2020-07-07 13:48:28 · 1371 阅读 · 0 评论 -
sscanf
sscanf 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。 其中的format可以是一个或多转载 2020-07-07 11:38:51 · 2301 阅读 · 2 评论 -
%02x与%2x 之间的区别
输出最小宽度用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时)。X 表示以十六进制形式输出02 表示不足两位,前面补0输出;如果超过两位,则实际输出举例:printf("%02X", 0x345); //打印出:345printf("%02X", 0x6); //打印出:06而如果直接写为 %2x,数据不足两位时,实际输出,即不额外补0输出; 如果超过两位,则实际输出。printf("%2X".转载 2020-07-07 11:00:34 · 2656 阅读 · 0 评论 -
C语言预处理命令详解
https://www.cnblogs.com/clover-toeic/p/3851102.html一 前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。 预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处...转载 2019-04-08 13:26:41 · 429 阅读 · 0 评论 -
C语言函数调用栈(一)
https://www.cnblogs.com/clover-toeic/p/3755401.html 程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的...转载 2019-04-08 14:16:32 · 1308 阅读 · 0 评论 -
C语言函数调用栈(二)
https://www.cnblogs.com/clover-toeic/p/3756668.html5 函数调用约定 创建一个栈帧的最重要步骤是主调函数如何向栈中传递函数参数。主调函数必须精确存储这些参数,以便被调函数能够访问到它们。函数通过选择特定的调用约定,来表明其希望以特定方式接收参数。此外,当被调函数完成任务后,调用约定规定先前入栈的参数由主调函数还是被调函数负责清除,以...转载 2019-04-08 14:19:16 · 696 阅读 · 0 评论 -
C语言函数调用栈(三)
https://www.cnblogs.com/clover-toeic/p/3757091.html6 调用栈实例分析 本节通过代码实例分析函数调用过程中栈帧的布局、形成和消亡。6.1 栈帧的布局 示例代码如下: 1 //StackReg.c 2 #include <stdio.h> 3 4 //获取函数运行时寄存器%ebp和%es...转载 2019-04-08 14:22:15 · 432 阅读 · 0 评论 -
双向链表详解
https://blog.csdn.net/cainv89/article/details/51301631https://www.2cto.com/kf/201608/540936.html1. 双向链表的概念1.1 双向链表的定义双向链表又称为双链表,是链表的一种。1.2 双向链表的结点结构双向链表的结点包括三个部分:前驱指针域、数据域和后继指针域。(1)前驱指针域(...转载 2019-04-26 11:10:28 · 2382 阅读 · 0 评论 -
C语言变量的存储布局
https://www.cnblogs.com/clover-toeic/p/3755066.html 分析以下代码中变量存储空间如何分配: 1 //MemSeg.c: 代码无意义,仅供分析用 2 #include <stdio.h> 3 #include <stdlib.h> //malloc函数声明位于<stdlib.h>或<c...转载 2019-04-08 13:03:23 · 386 阅读 · 0 评论 -
可变参数函数详解
https://www.cnblogs.com/clover-toeic/p/3736748.html 可变参数函数又称参数个数可变函数(本文也简称变参函数),即函数参数数目可变。原型声明格式为: type VarArgFunc(type FixedArg1, type FixedArg2, …); 其中,参数可分为两部分:数目确定的固定参数和数目可变的可选...转载 2019-04-08 13:00:39 · 13971 阅读 · 0 评论 -
CRC循环冗余校验
原理:要计算n位的CRC值,将待CRC的数据左移n位(即在其最右端添加n个0),如果待CRC数据的最高位为0,不进行任何操作,否则将其与事先设定好的除数(divisor)进行异或操作,然后将除数右移一位。重复上述两个操作直到除数到达待CRC数据的右端。举例如下:11010011101100 000 1011 0110001转载 2017-08-07 16:27:57 · 511 阅读 · 0 评论 -
单链表/双向链表的建立/遍历/插入/删除
转自:http://www.cnblogs.com/corvoh/p/5595130.html一、链表结构和静态/动态链表二、单链表的建立与遍历三、单链表的插入与删除四、双向链表的概念五、双向链表的建立与遍历六、双向链表的元素查找七、循环链表的概念八、合并两个链表的实例九、链表实战 一、链表结构转载 2017-09-05 10:49:26 · 2937 阅读 · 0 评论 -
常用宏定义
1防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 文件开头处#define DEBUG,在代码中加调试代码#ifdef DEBUG{}#endif2重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef unsigned char转载 2017-09-13 14:16:12 · 245 阅读 · 0 评论 -
__attribute__ 知多少?
转自:http://www.cnblogs.com/astwish/p/3460618.htmlGNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。__attribute__转载 2017-09-05 16:42:52 · 902 阅读 · 0 评论 -
#pragma pack(n)和__attribute__((aligned(m)))的区别
#pragma pack(n)和__attribute__((aligned(m)))的区别:前 者告诉编译器结构体或类内部的成员变量相对于第一个变量的地址的偏移量的对齐方式,缺省情况下,编译器按照自然边界对齐,当变量所需的自然对齐边界比n大 时,按照n对齐,否则按照自然边界对齐;后者告诉编译器一个结构体或者类或者联合或者一个类型的变量(对象)分配地址空间时的地址对齐方式。也就是所,如 果转载 2017-09-05 16:49:37 · 641 阅读 · 0 评论 -
回调函数
转自 http://www.cnblogs.com/ioleon13/archive/2010/03/02/1676621.html实际工作中,对于回调函数一直是我不愿意去触碰的东西,一来由于被很多人搞得神秘兮兮的以为是很高深难懂的技术,二来在一般情况下通过互相包含类指针也能够解决问题,所以一直就不想去研究这个东东,最近一个项目中被经理逼着使用了回调函数,切切实实体会到了它的好处,代码中类转载 2017-11-03 11:08:24 · 257 阅读 · 0 评论 -
函数回调机制、异步函数回调机制图例详解
转自 http://blog.csdn.net/zhangliangzi/article/details/52066560函数回调机制,一种双向调用思想,简单来说就是,如下图所示: 在层次一中的方法一(函数)调用层次二中的方法,并传入函数二的地址,而这个被调用的方法又会调用层次一中的方法,这个最后被调用的方法二就是回调方法。方法三调用方法二就转载 2017-11-03 11:10:20 · 493 阅读 · 0 评论 -
程序员必知之浮点数运算原理详解
导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握。许多程序员都不清楚使用==操作符比较float/double类型的话到底出现什么问题。 许多人使用float/double进行货币计算时经常会犯错。这篇文章是这一系列中的精华,所有的软件开发人员都应该读一下。 随着你经验的增长,你肯定 想去深入了解一些常见的东西的细节,浮点数运算就是其中之一。1. 什么是浮点数?转载 2017-12-05 11:05:46 · 1492 阅读 · 0 评论 -
写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
https://blog.csdn.net/yxtxiaotian/article/details/52149715CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数据进行校验。因此,掌握基本的CRC算法应是嵌入式程序员的基本技能。在网上有一篇介绍CRC 算法的非常好的文章,作者是Ross Williams,题目叫:“A PAINLESS ...转载 2018-03-26 18:24:29 · 269 阅读 · 0 评论 -
printf 格式
来自于百度百科:用法int printf(const char *format,[argument]);format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type规定数据输出方式,具体如下: 1.type 含义如下: d 有符号10进制整数 i 有符号10进制整数 o 无符号8进制整数 u 无转载 2017-08-07 16:26:44 · 417 阅读 · 0 评论