![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 87
huangshanchun
机会比实力重要,实力不够的时候,肯定会流失机会。
展开
-
redis数据结构简介
0 概述Redis(http://redis.io)是一个开源的Key-Value存储引擎。它支持string、list、hash、set和sorted set等多种值类型。1 五大数据结构原创 2020-03-04 21:00:14 · 145 阅读 · 0 评论 -
C++类与内存
在C++类成员中引用,常量,静态变量,静态函数等,它们被分配在内存的那个地方,有哪些特性。1.常量和引用必须重载构造函数进行初始化,否则就会编译失败, new 的时候再堆上,直接创建在栈上。值得说明的是:C++类成员常量与C语言常量一样,通过指针可以修改其的值。类的外部常量一旦初始化以后,不会读内存,从代码区的符号表自动生成,2.静态变量,分配在静态区域,其属于整个类,而不属于具体对象。原创 2015-06-05 15:07:17 · 814 阅读 · 0 评论 -
C++模板元编程
主要思想利用模板特化机制实现编译期条件选择结构,利用递归模板实现编译期循环结构,模板元程序则由编译器在编译期解释执行。优劣及适用情况通过将计算从运行期转移至编译期,在结果程序启动之前做尽可能多的工作,最终获得速度更快的程序。也就是说模板元编程的优势在于:1.以编译耗时为代价换来卓越的运行期性能(一般用于为性能要求严格的数值计算换取更高的性能)。通常来说,一个有意义的程序的运行次数(原创 2015-05-22 22:16:46 · 836 阅读 · 0 评论 -
引用的本质是什么?
在大学的时候,教材里这么说的“引用是个别名...引用作为目标的别名而使用...引用不是值不占存储空间...引用只有声明,没有定义...”那么,引用到底占不占内存空间,引用的本质是什么?下面举个例子:int a = 10;int &b = a;这里,显然,b是一个引用。语句“int a = 10;”,在内存中申请了一个int型变量,32位机中占4个字节,那么变量名a放哪里了呢转载 2015-06-04 20:58:49 · 697 阅读 · 0 评论 -
静态和动态断言调试
写程序的时候经常需要调试,下面给出静态和动态断言调试以及常用的内置宏。内置宏:__FILE__//输出文件名__LINE__//所在行 __DATE__//日期 __TIME__//时间 __FUNCTION__//函数名static_assert( constant-expression, string-literal );静态断言是原创 2015-06-03 18:56:54 · 1263 阅读 · 0 评论 -
linux平台下C语言实现一个简单的httpsever
一.HTTP请求和应答的步骤HTTP是基于TCP协议的短连接,一般为以下四步:第一步、client通过tcp协议连接到server端;第二步、client给server发送请求request(client一个连接只给server发一次request请求);第三步、server给client回复reponse;第四步、双方断开连接注:(client如果想再次给server发送原创 2015-05-13 13:03:12 · 10318 阅读 · 5 评论 -
C++实现大数据乘法
1.测试环境 vs2013 windows 7采用累乘的方式实现,然后再统一的进位,最后将其在转换为字符串,输出。程序代码:#define _CRT_SECURE_NO_WARNINGS#includestruct BigDataMutliplie{private: char data_a[100]; char data_b[100]; int len_a; int原创 2015-05-15 08:11:02 · 1998 阅读 · 0 评论 -
C++函数包装器
函数包装器把函数包装起来:有以下特点1.设计通用的函数执行接口,可以设置计数(函数执行次数)和关卡2.函数包装器依赖于函数模板,实现通用泛型3.函数代码可以内嵌在函数中4.原理是函数指针实现的以下给出C++简单的函数包装器案例#include#includeusing std::cout;using std::endl;using std::cin;using原创 2015-05-11 20:00:16 · 5626 阅读 · 0 评论 -
C++ new限定区域分配内存
C++中从指定区域分配内存:#includeusing namespace std;const int buf(1024);char buffer[buf]={0}; //开辟静态区域 //p1,p3作为指针变量在栈区,存储的地址指向堆区//手动释放内存//p2,p4作为指针变量在栈区,存储的地址指向静态区//自动释放内存,用于分配用完了就不会再用的数据//避免内存泄漏,原创 2015-05-10 18:57:18 · 3258 阅读 · 0 评论 -
深入理解C++虚函数
测试环境:vs2013,windows 7 32 位系统1.虚函数是放在虚函数表中的,因此我们可以通过访问虚函数表来找到相应的虚函数入口地址,从而调用虚函数。2.由于虚函数是放在虚函数表中的,所以在继承的时候,其会放到子类的虚函数表中(如果子类重写了父类中虚函数则父类中相应虚函数在子类的虚函数表中就会被覆盖)。3.虚函数表中存放虚函数顺序是先父类的(如果子类重写了父类的则直接替换原创 2015-04-20 21:16:51 · 1030 阅读 · 0 评论 -
基于Detours劫持360启动
一.首先需要下载detours(百度或者google),这里我们下载的DetoursExpress30.msi二.安装detours 编译原代码三.在VS2013 中找到Visual Studio Tools四.以管理员的身份运行vs2013开发人员命令提示 ,切换到Detours的src目录输入nmake命令五.编译成功后即可使用detours.lib 文件原创 2015-04-02 15:06:38 · 2014 阅读 · 0 评论 -
动态分配高级
由于数组在内存里是线性排列的,只要改变指针就可以改变其访问方式,因为指针不仅仅是地址最重要的是步长,其类型确定其内存的解析方式,因此我们可以通过改变其指针类型改变内存的访问方式。#include#includevoid main(){ int i,j,k; int *p=(int *)malloc(sizeof(int)*40);// 一个一维数组,其在内存是线性的 int (*原创 2015-04-11 20:07:15 · 1659 阅读 · 0 评论 -
实例理解const用法
笔试题,面试题经常考到const ,下面就通过实例对const进行总结。首先要理解常量指针和指针常量的区别,* (指针)和 const(常量) 谁在前先读谁。const int *p //常量指针int const *p //常量指针int * const p //指针常量另外const后面 修饰谁,说明它不能改变,const int *p const 后面是int *p 说明初始化原创 2015-04-11 15:41:03 · 877 阅读 · 0 评论 -
文件I/O之C标准库函数和系统库函数区别
1.首先C标准库函数是工作在系统库函数之上的。C标准库函数在读写文件时候都有一个文件流指针。FILE*fp=NULL;// fp=fopen(F_PATH,"r"); fp文件流指针,其指向结构体如下图所示。文件描述符指向磁盘文件,在进行文件读写操作时候是先读写到缓冲区,然后再调用系统应用层API write函数进行写操作,write将文件内容写到内核缓冲区,然后再调用内核层API原创 2015-06-06 15:34:06 · 3216 阅读 · 0 评论 -
C++ 之继承中的重载
在C++中父类与子类之间的重载,同名函数会覆盖,即使参数类型不一样,不能直接调用,必须调用父类默认生成的对象来调用。测试程序:#includeclass A{public: void fun() { std::cout<<"A fun"<<std::endl; } void fun(int num) { std::cout<<"A fun"<<num<<std::原创 2015-06-28 15:25:37 · 1067 阅读 · 0 评论 -
最小二乘法C语言的实现
1.实验目的:进一步熟悉曲线拟合的最小二乘法。掌握编程语言字符处理程序的设计和调试技术。2.实验要求:输入:已知点的数目以及各点坐标 。输出:根据最小二乘法原理以及各点坐标求出拟合曲线 。3.程序流程:(1)输入已知点的个数;(2)分别输入已知点的X坐标;(3)分别输入已知点的Y坐标;(4)通过调用函数,求出拟合曲线。最小二乘法......原创 2015-12-26 14:53:50 · 21844 阅读 · 6 评论 -
C++实现含有中文字符串逆序
在字符逆序是我们实际开发和面试中常见的问题,常见到的是ASCII字符串逆序,ASCII编程字符串逆序比较简单,一个字母、数字或者符号只占用一个字节,因此逆序也相对较容易。然而汉字太多一个字节不够编码,因此一个汉字占用两个字节,其采用GBK编码方法。同时GBK为了兼容ASCII编码,规定汉字的每一个字节第八位为1(ASCII编码方式共用了七位)。如果知道了上述这些也就比较容易写出含有中文字符串的逆序原创 2015-11-19 15:37:36 · 2068 阅读 · 0 评论 -
C++ 中new char[]()和C++ 中new char[]的区别
测试环境: vs210 windows 7在C++ 中new char[]() 编译器默认将其初始化为0,new char[]则不会初始化。#includeusing namespace std;int main(int argc,char *argv[]){ char *p=new char[10];// vs 编译器则不进行初始化 char *q=new char[10](原创 2015-11-24 10:22:37 · 22414 阅读 · 0 评论 -
__stdcall和__cdecl的区别
_stdcall和__cdecl是两种函数名字修饰。(注意是连续的两个下划线)Windows上windows上不管是C还是C++,默认使用的都是__stdcall方式。不论__stdcall还是__cdecl函数参数都是从可向左入栈的,并且由调用者完成入栈操作。对于__stdcall方式被调用者自身在函数返回前清空堆栈;而__cdecl则由调用者维护内存堆栈,所以调用者函数生成的汇编代转载 2015-09-22 09:41:23 · 869 阅读 · 0 评论 -
实例讲解,set,multiset,map,multimap关联容器
测试环境:windows 7 vs2010内部元素有序排列,新元素插入的位置取决于它的值,查找速度快。除了各容器都有的函数外,还支持以下成员函数:find: 查找等于某个值的元素(x小于y和y小于x同时不成立即为相等)lower_bound: 查找某个下界upper_bound: 查找某个上界equal_range: 同时查找上界和下界count:计算等于某个值的元原创 2015-08-03 21:25:13 · 1835 阅读 · 0 评论 -
实例讲解C++中lambda表达式
测试环境 windows 7 vs2013C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。例如GPU编程中常用到。一个最简单的lamada表达式程序#include #include using namespace std;int main(){ function fun = [](){cout << "hello la原创 2015-07-30 21:56:11 · 12331 阅读 · 0 评论 -
类模板与友元函数链接问题
测试环境:windows 7 vs20131.代码#includetemplateclass Test{private: T m_x;public: friend void print(const Test &test); Test(T x) :m_x(x) { }};template void print(const Test &test){ std::原创 2015-07-07 08:43:17 · 1236 阅读 · 0 评论 -
C++ 之RTTI
RTTI(Run-Time Type Information,通过运行时类型信息)程序能够使用基类的指针或者引用来检查这些指针或引用所指的对象的实际派生类对象。RTTI提供了以下两个非常有用的操作符:(1)typeid操作符,返回指针和引用所指的实际类型。(2)dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用,dynamic_cast在转换的过原创 2015-07-08 19:28:29 · 755 阅读 · 0 评论 -
fread读文件读取不全解决方法
fread,对指定长度的文件数据。读取的长度远小于文件的总长度,怎么回事呢?查MSDN,fopen最后一个参数:t Open in text (translated) mode.In this mode, CTRL+Z is interpreted as an end-of-file character on input. In files opened for reading/w转载 2015-04-01 07:30:32 · 8834 阅读 · 0 评论 -
char* 与 LPCTSTR 类型的互相转换
原文出自:http://www.cnblogs.com/tclikang/archive/2012/06/11/2544771.html1.char* 转换成 LPCTSTRchar ch[1024] = "wo shi ni baba";int num = MultiByteToWideChar(0,0,ch,-1,NULL,0);wchar_t *wide = new wc转载 2015-04-02 14:59:30 · 19057 阅读 · 1 评论 -
Window 下键盘钩子(监控键盘),并将监控信息发到服务端(UDP)
钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时在钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。 在本程序中我们需要捕获在任意窗口上的键盘输入,这就需要采用全局钩子以便拦截整个系统的消息,而全局钩子函数必须以原创 2015-03-13 22:02:27 · 1916 阅读 · 1 评论 -
const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)
原文在这里总结一下const限定修饰符的各种用法,都已经过vs2010测试。1) 声明及初始化const常量。在声明一个const常量时,必须对其初始化,否则会报错。1 const int constvar; //error2 const int constvar = 10; //ok但是,有一个例外的情况,就是extern进来的const转载 2014-10-08 22:12:20 · 728 阅读 · 0 评论 -
C语言实现读写配置文件项目
C语言实现配置文件的查找key的value,原创 2014-11-04 19:58:04 · 5173 阅读 · 0 评论 -
C和C++中const不同之处
C语言const 是“冒牌货”看下面程序:原创 2014-11-17 20:17:17 · 1991 阅读 · 0 评论 -
结构体高级话题
测试环境:vs2010 windows7首先看下面一段程序:原创 2014-11-15 15:21:51 · 789 阅读 · 0 评论 -
C语言如何中避免野指针
C语言如何中避免野指针:原创 2014-10-29 21:59:37 · 931 阅读 · 0 评论 -
C语言面试题大汇总之华为面试题
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量?转载 2014-10-29 22:08:27 · 922 阅读 · 0 评论 -
使用goto语句避免内存泄露
看下面的例子:原创 2014-10-29 19:54:47 · 1522 阅读 · 0 评论 -
C/C++数组做形参
数组做函数参数,会退化为指针.数组原创 2014-10-26 21:04:22 · 1290 阅读 · 0 评论 -
STL 中“相等”的概念
#include #include #include using namespace std;int main(){ vector vec_test; vector::iterator ite_p;//定义迭代器 vec_test.push_back(4); vec_test.push_back(8); vec_test.pu原创 2014-04-18 11:01:23 · 832 阅读 · 0 评论 -
dll动态库开发-模拟socket通信
测试环境:windows 7 VS2010原创 2014-11-10 19:06:47 · 2709 阅读 · 0 评论 -
关于返回对象或变量的引用(reference)的问题
由于局部的对象或变量是在原创 2014-07-28 19:44:13 · 1140 阅读 · 0 评论 -
C++ 异常处理(二)
1. 标准异常C++标准库中定义一组类,用于报告在标准库中的函数遇到的问题。程序员以在自己编写的程序中使用这些标准异常类。标准库异常类定义在四个头文件中:①exception头文件中定义了最常见的异常类,类名是exception,这个类只通知异常的产生,不会提供更多的信息②stdexcept头文件中定义了以下几个异常类:runtime_error, range_error, ove原创 2014-10-07 09:13:38 · 850 阅读 · 0 评论 -
C++ 中函数静态局部变量
先看一段程序:原创 2014-09-15 14:21:37 · 825 阅读 · 0 评论 -
C语言最简main函数的反汇编代码解析
原文出自:对于新手而言,汇编看着就头疼,更别提去OD什么东东了,我也正处于这个阶段。前两天看了《天书夜读》第一章关于main函数反汇编的解析,顿时有种茅塞顿开的感觉。再看起来汇编代码,虽然还是没有看C语言那么容易,但心情变得很轻松。这都是《天书夜读》的功劳。特此分享给菜菜同行。目前我们写的最简单的Main函数如下:代码:#include "stdafx.h"int _tm转载 2014-07-26 19:10:28 · 3002 阅读 · 0 评论