C/C++
Z_hehe
不想说什么
展开
-
C语言中结构体对齐方式的问题
关于C语言结构体对齐的问题原创 2016-11-22 11:15:42 · 493 阅读 · 0 评论 -
gcc版本太高导致编译错误
编译出错是家常便饭了,我自己先把遇到的问题先一点点存到这里吧:1 label at end of compound statement(标志出现在复合语句的末尾)GCC4不允许行标记之后为空,加上空语句";"就可以了,如default:}改成:default: ;}原创 2017-12-22 21:00:49 · 6506 阅读 · 0 评论 -
堆排序
目录堆的概念要点算法分析 堆排序算法的总体情况 时间复杂度 算法稳定性完整参考代码 JAVA版本参考资料相关阅读堆的概念在介绍堆排序之前,首先需要说明一下,堆是个什么玩意儿。堆是一棵顺序存储的完全二叉树。其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。举例来说,对于n转载 2017-10-11 17:08:03 · 461 阅读 · 0 评论 -
sizeof与strlen的区别
char str[20]="0123456789"; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。 int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响==================================转载 2017-09-25 19:48:20 · 254 阅读 · 0 评论 -
C语言中连续判断符
#include "stdio.h" main() { int a=1,b=2, c=3, t; while (a { t=a; a=b; b=t; c--; } printf("%d,%d,%d",a,b,c); } 答案是什么?为什么?答案不是2 1 2转载 2017-09-08 20:48:34 · 3707 阅读 · 0 评论 -
C语言字符串解析程序
#include #include char s[]="direct usb://Canon/MX420%20series?serial=312E7C&interface=1 \"Canon MX420 series\" \"Canon MX420 series\" \"MFG:Canon;CMD:BJL,BJRaster3,BSCCe,NCCe,IVEC,IVECPLI;SOJ:BJNP2,转载 2017-08-30 19:33:42 · 2925 阅读 · 0 评论 -
字符指针赋值的问题
定义unsigned char *s = "1234567"; 报错 无法从“const char [8]”转换为“unsigned char *”char* a = "123456";字符串直接赋值是可以的啊从报错提示,可以很明显看到"1234567"的数据类型是const char [8],当然可以弱化为const char*,char* a =原创 2017-08-22 11:00:13 · 2161 阅读 · 0 评论 -
解析内存对齐
概述:内存对齐只是指数据存储在内存时的起始地址是否是某个值的整数倍。对于所有直接操作内存的程序员来说,数据对齐都是很重要的问题。数据对齐对你的程序的表现甚至能否正常运行都会产生影响。就像本文章阐述的一样,理解了对齐的本质还能够解释一些处理器的"奇怪的"行为。内存存取粒度 程序员通常倾向于认为内存就像一个字节数组。在C及其衍生语言中,char * 用来指代“一块内存”,甚至在JAV转载 2017-07-10 15:17:53 · 427 阅读 · 0 评论 -
C 预处理器和C库
编译程序之前,先由预处理器检查程序(因此称为预处理器)。根据程序中使用的预处理指令,预处理器用符号缩略语所代表的内容替换程序中的缩略语。常量#define每个#define(即逻辑行)由三步分组成。第一部分为指令#define本身第二部分为所选择的缩略语,这些缩略语成为宏(macro)。一些宏用来代表值,它们被成为对象宏(object-like macr转载 2017-04-13 19:49:14 · 438 阅读 · 0 评论 -
C语言包含头文件时用引号和尖括号的区别
用尖括号 #include <>:一般用于包含标准的库头文件,编译器会去系统配置的库环境变量和者用户配置的路径去搜索,而不会在项目的当前目录去查找用双引号 #include "":一般用于包含用户自己编写的头文件,编译器会先在项目的当前目录查找,找不到后才会去系统配置的库环境变量和用户配置的路径去搜索原创 2017-03-15 10:07:54 · 667 阅读 · 0 评论 -
C语言 静态变量static的用法
static有两个作用第一个作用: 修饰变量,变量又分为局部和全局变量,但他们都存在内存的静态区 静态全局变量,作用于仅限于变量被定义的文件。其他文件即使用extern声明也没法使用,准确说就是作用域是从定义处开始,到文件结束, 在定义处之前的那些代码不能使用它。 静态局转载 2017-03-15 09:55:16 · 24910 阅读 · 2 评论 -
动态库与静态库优缺点比较
动态库与静态库优缺点比较 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护。我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级。 例如我要在一段代码中多次交换两个变量的值,我可以在转载 2017-03-06 21:03:34 · 444 阅读 · 0 评论 -
基于C语言sprintf函数的深入理解
printf 可能是许多程序员在开始学习C语言时接触到的 第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类 型的数据构造成字符串时,sprintf的强大功能很少会让你失望。由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导转载 2016-12-23 09:51:30 · 1425 阅读 · 0 评论 -
C语言中volatile关键字的作用
http://blog.csdn.net/tigerjibo/article/details/7427366 一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水转载 2016-11-28 09:34:19 · 284 阅读 · 0 评论 -
Socket心跳包机制
http://blog.csdn.net/xuyuefei1988/article/details/8279812心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在转载 2016-11-26 15:47:50 · 543 阅读 · 0 评论 -
C语言位运算符
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值转载 2016-12-08 10:22:13 · 465 阅读 · 0 评论 -
C++中public,protected,private访问小结
第一:private,public,protected的访问范围: private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元函数包括两种:设为友元转载 2017-12-24 21:26:43 · 338 阅读 · 0 评论