C/C++
文章平均质量分 96
C/C++语言的开发
FeelTouch Labs
这个作者很懒,什么都没留下…
展开
-
LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRAR转载 2015-06-08 21:27:14 · 1162 阅读 · 0 评论 -
gcc编译器相关参数详解
CFLAGS = -g -O2 -Wall -Werror -Wno-unused 编译出现警告性错误unused-but-set-variable,变量定义但没有使用,解决方法: 增加CFLAGS 或CPPFLAGS参数如下: CPPFLAGS=" -Werror -Wno-unused-but-set-variable" || exit 1转载 2015-02-14 17:21:32 · 1213 阅读 · 0 评论 -
C/C++获取当前系统毫秒时间戳
C/C++获取当前系统毫秒时间由于要实现与JAVA相同的功能,所以先贴上JAVA代码的实现:public static void main(String[] args){ System.out.println("java program :" + System.currentTimeMillis()); }起初准备采用time(NULL)来实现...原创 2019-12-24 00:15:58 · 5418 阅读 · 0 评论 -
Typedef 指针、常量、类型名 与#define详解
Typedef指针、常量、类型名原创 2014-11-16 10:31:01 · 1286 阅读 · 0 评论 -
干货】国外程序员整理的 C++ 资源大全
关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX lib转载 2014-10-28 20:35:34 · 1478 阅读 · 0 评论 -
经典局部变量返回地址错误问题
错误代码:#include using namespace std;//在字符串des后接入一个单字符的字符串,这个单字符的字符串来源于字符串src的第一个字符 用于其他函数调用char * strcat_1_(char * des, char * &src){ int len = strlen(des); char des1[30] = {}; for(int i=0;原创 2014-11-13 23:58:54 · 992 阅读 · 0 评论 -
轻量级跨平台消息传递协议XML-RPC深度解析
一、引言实现跨平台通信的协议主要有简单对象访问协议(Simple Object Access Protocol,SOAP)、代表性状态传输(Representational State Transfer,REST)以及 XML 远程过程调用协议(XML Remote Procedure Call,XML-RPC)等。二、为什么选择 XML-RPC?集成 C/C++ 的挑战可以通过多原创 2014-09-17 23:07:27 · 2755 阅读 · 0 评论 -
一段代码引起的对C++构造函数、析构函数,复制构造函数,运算符重载的深度理解
代码和解释:#include "stdafx.h"#include #include #include using namespace std;class test{ int *p;public: test(int value){ p = new int(value); cout>"<<endl; cout<<"p的地址为"<<&p<<";p的值为"<<p <<"原创 2014-09-03 22:07:32 · 1228 阅读 · 0 评论 -
C++专题分析------无法满足内存分配需求时的解决方法
operator new 和 operator delete仅适合用来分配单一对象;Array原创 2014-05-25 18:39:25 · 1145 阅读 · 0 评论 -
提高编程效率的C++编程箴言
对于单纯常量,最好以const对象或enums替换#defines对于形似函数的宏,最好改用inline函数替换#define将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复。确定对象被使用前已经被原创 2014-05-21 23:51:07 · 2237 阅读 · 0 评论 -
struct和typedef struct的区别
1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Stud转载 2014-04-13 22:05:46 · 874 阅读 · 0 评论 -
如何做到每天写代码?
你是否曾为业余项目没有进展而惆怅过?想要有完整两天时间(没有任何的放松机会)来编程也不现实,时间的零乱往往让人不知所措。还有一个重要的问题就是你上个星期写的代码,隔一个星期后再接着写,你还能记得多少?为此,可汗学院计算机科学学院院长暨jQuery创始人John Resig撰文分享了自己的心得和体会。现在,让我们看看John Resig是如何做到每天都写代码的,首先他给自己定下了几条规则:转载 2014-04-13 23:44:56 · 997 阅读 · 0 评论 -
C++之private虚函数--面试系列
一般我们说虚函数,它的访问级别都是public的,用类对象可以直接调用,这样就可以实现运行时的类型绑定,那如果我们将虚函数私有化会出现什么情况呢?我们先来看一个非虚函数私有化的例子class Base{private: void PrintClassName () { cout"Base"endl; }public:转载 2013-08-28 22:45:09 · 1032 阅读 · 0 评论 -
C++指针数组和数组指针--笔试面试系列
一、int main(int argc, _TCHAR* argv[]){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); int *ptr1=a; printf("%d,%d",*(a+1),*(ptr-1)); return 0;}结果:2,5解析:a[5]={1原创 2013-08-28 22:08:11 · 1318 阅读 · 0 评论 -
虚继承相关问题--笔试面试系列
1,虚继承是多重继承的特有概念,为解决多继承而出现的。如果B继承自A,C继承自A,且D同时继承自B和C,就会在类D中同时出现两次A。为了节省内存空间,可以将B、C对A的继承定义为虚继承。而A就成了虚拟基类。代码如下:class A;class B: public virtual A;class C: public virtual A;class D: public vi原创 2013-08-28 20:38:56 · 1178 阅读 · 0 评论 -
C/C++生成二叉树并搜索
直接上干货:#include "targetver.h"using namespace std;//定义节点struct BiNode{ int data; BiNode * lchild; BiNode * rchild;};//插入结点BiNode * InsertBST(BiNode * root,int data){if(root==NULL){ root原创 2014-11-06 21:33:58 · 1516 阅读 · 0 评论 -
C++中的4个类型转换关键字
1 reinterpret_cast'reinterpret_cast'转换一个指针为其它类型的指针。它也允许从一个指针转换为整数类型。反之亦然。(译注:是指针具体的地址值作为整数值)这个操作符能够在非相关的类型之间转换。操作结果只是简单的从一个指针到别的指针的值的二进制拷贝。在类型之间指向的内容不做任何类型的检查和转换。如果情况是从一个指针到整型的拷贝,内容的解释是系统相关的转载 2015-02-24 10:23:09 · 1330 阅读 · 0 评论 -
WebService的创建,部署和使用
ebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口.但这一点在我们已经部署好的服务器上,却是不被允许的,于是就选择WebService来代替了.当然现在我们也可以选择WCF来完成.不过这不是我们今天的主题.转载 2015-03-06 11:03:57 · 872 阅读 · 0 评论 -
mmap共享存储映射(存储I/O映射)系列详解
转载:https://blog.csdn.net/qq_36359022/article/details/79992287参考:https://blog.csdn.net/hj605635529/article/details/73163513mmap共享存储映射又称为存储I/O映射,是Unix**共享内存**概念中的一种。在Unix进程间通信中,大致有1. 管道 ...转载 2019-05-11 01:37:59 · 776 阅读 · 0 评论 -
C/C++中各种类型int、long、double、char表示范围(最大最小值)
转自:http://blog.csdn.net/xuexiacm/article/details/8122267[cpp] view plaincopy#include #include #include using namespace std; int main() { cout "type转载 2015-05-25 11:22:10 · 1606 阅读 · 0 评论 -
循环结构中break、continue、return和exit的区别
1. breakbreak语句的使用场合主要是switch语句和循环结构。在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句。如果在多重嵌套循环中使用break语句,当执行break语句的时候,退出的是它所在的循环结构,对外层循环没有任何影响。如果循环结构里有switch语句,并且在switch语句中使用了break语句,当执行swi转载 2015-06-02 19:11:28 · 3705 阅读 · 0 评论 -
很经典的C++知识
Overload和Override的区别,Overload方法是否可以改变返回值类型?答:Overload是重载的意思,Override是覆盖的意思,也就是重写。(1)重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同),重载发生在同一个类中。(2)重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同原创 2015-04-20 21:00:15 · 1603 阅读 · 0 评论 -
卡特兰数---n 个元素顺序入栈,则可能的出栈序列有多少种
题目:N个数依次入栈,出栈顺序有多少种? 首先介绍一下卡特兰数:卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466原创 2015-04-16 16:48:58 · 8782 阅读 · 1 评论 -
C++编译器无法捕捉到的8种错误
C++是一种复杂的编程语言,其中充满了各种微妙的陷阱。在C++中几乎有数不清的方式能把事情搞砸。幸运的是,如今的编译器已经足够智能化了,能够检测出相当多的这类编程陷阱并通过编译错误或编译警告来通知程序员。最终,如果处理得当的话,任何编译器能检查到的错误都不会是什么大问题,因为它们在编译时会被捕捉到,并在程序真正运行前得到解决。最坏的情况下,一个编译器能够捕获到的错误只会造成程序员一些时间上的损失,转载 2015-04-16 16:32:16 · 989 阅读 · 0 评论 -
自增、自减运算符的前缀和后缀
试卷中有这么一道题目:12inta = 4;(++a) += i;求a的数值,正确答案是10。如果你认为这道题重点只是考察运算符优先级,可能很容易得到正确的答案。但是,考虑过为什么下面的代码无法编译么?自己在笔试时,考虑到了关于表达式作为赋值运算符左值的问题,但是自己确实又对重载“++”操作符的原创 2015-04-20 21:02:08 · 9790 阅读 · 2 评论 -
小量压缩简单算法 .
本方介绍一种简单的数据压缩算法:SB (simple block)作者:realxie在对文档进行倒排的时候经常涉及到对倒排文档的压缩,例如假设有单词instance 出现的文档有<1,3 ,4 , 6 ,9 ,10,... >,即倒排表以升充排列,这样我们就可以在倒排文件中只保存前后两个文档位置的差量,即转变之后结果为<1 ,2 , 1 , 2 , 3 , 1 , ...>,转载 2015-04-16 15:50:22 · 1308 阅读 · 0 评论 -
C++中的引用问题
1、malloc和new区别与联系a、malloc:malloc为函数,需要头文件,申请的无类型,需要强制转换;free释放。示例:char *p = (char *)malloc(10 * sizeof(char));free(p);b、new:new是运算符,不需要头文件,申请的是有类型的,自动调用构造函数;delete释放,自动调用析构函数。示例:char *p转载 2015-04-19 17:06:26 · 790 阅读 · 0 评论 -
再论拷贝构造函数和拷贝赋值运算符
拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const 类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另 外,也可以用非常量方式调用。 在C++中,下面三种对象需要调用拷贝构造函数: 1) 一个对象以转载 2015-04-18 14:37:44 · 856 阅读 · 0 评论 -
深度理解map hash_map set
map VS hash_map 1)map存储的时候为排好序的,所以输出时候也是排序的。而hash_map不是的。2)map具有稳定性,底层存储为树,这种算法差不多相当与list线性容器的折半查找的效率一样,都是O (log2N)。 hash_map使用hash表来排列配对,hash表是使用关键字来计算表位置。当这个表的大小合适,并且计算算法合适的情况下,hash表的算法复原创 2015-04-22 23:25:54 · 1693 阅读 · 0 评论 -
数组与字符串初始化为空的深入理解
正题1. 一维数组初始化,可以只给一部分元素赋值,如下int a[10] = {0,1,2,3,4};这样只给前面的5个元素赋值,后5个元素为0。将char p[8]; 看作是字符数组的话, charp[8]={0}; 表示第一个元素为0,后面的7个元素也为0;所以 char p[8] = {}和charp[8]={0}一样; 8个元素都初始化为02.用字符串常量来使字原创 2015-04-22 22:36:54 · 13297 阅读 · 0 评论 -
char *与char []深度刨析
编译不能通过#include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char *p= "hello" ; //不是把一个字符串赋给了一个字符型的指针,而是把一个字符型的指针指向了字符串的首地址。strcpy(p,"hel"); cout << p << endl; return原创 2015-04-05 22:36:28 · 1399 阅读 · 0 评论 -
C++基础知识系列--持续更新
1,什么函数不能声明为虚函数 ?答案:1,http://blog.csdn.net/y296144646q/article/details/6409966 2,http://roz1987.blog.163.com/blog/static/1163929582010112615629823/原创 2013-08-16 12:14:51 · 901 阅读 · 0 评论 -
利用应用初始化数组
原创 2013-08-09 09:32:32 · 985 阅读 · 0 评论 -
C++整型\字符串\数组的相互转换
总体思路:1. 直接使用itoa转换2. 用sprinf(buf, "%d", 234")3. 用ostringstream sout; sout<<234; sout.str()就是转换好的.从效率角度来说, 1>2>3. 安全性角度来说1例1:int a=234char ch[5];ch=itoa(a);cout<<ch<<endl;例2:#in原创 2013-07-29 19:53:17 · 7467 阅读 · 0 评论 -
C++调用大数组出现栈溢出的问题解决方法,堆和栈的完全解析
总结:除非特别要求,不应开一个大于>100的数组,是很不明智的!主要有两个办法:一 改为堆变量:int* pa = malloc(sizeof(int)*1000*1000);然后可以将pa当数组用。(数组和指针在C里基本等同)当然,不用了记得free pa。二 修改系统限制这个栈变量= 1000*1000*4 = 4M。(约等于)如果这个函数不频繁调用,也不递原创 2013-07-21 19:54:44 · 19538 阅读 · 0 评论 -
C++ ofstream和ifstream实用讲解
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout 2、析取器(>>)转载 2013-07-17 09:17:36 · 1485 阅读 · 0 评论 -
c++排序和去除重复的算法
问题描述:已知有N(N≤100)个1到1000之间的整数输入时,输入两行第一行输入1个整数,表示生成的个数N第二行有N(如刚才输入了10,现在就有10个)个用空格格开的整数,为需要去重和排列的输对数字执行去除重复&从小到大排序输出时,输出两行第1行为1个正整数M,表示不相同的数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的数样例输入原创 2013-07-20 11:36:53 · 5897 阅读 · 0 评论 -
NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析--吐血放送
NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析,限于个人水平,如有错误请留言指出!TcpSink类的recv()方法:void TcpSink::recv(Packet* pkt, Handler*){ int numToDeliver; int numBytes = hdr_cmn::access(pkt)->size();//接收到的包的大小原创 2013-07-17 22:57:12 · 3796 阅读 · 0 评论 -
VC++學習與進階
原创 2013-07-03 09:10:10 · 820 阅读 · 0 评论 -
運算符的重載
运算符重载就是赋予系统预定义的运算符多重含义,使同一个运算符作用于不同类型的数据导致不同的行为。作用:–使得系统预定义的运算符能作用于用户自定义类型的数据,进行类似运算。–运算符重载的实质就是函数重载。将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。编译器遇到重载运算符时调用对应的运算符重载函数,从而完成该运算符应做的操作。运算符重载规则:–原创 2013-06-30 16:26:18 · 1467 阅读 · 0 评论