C/C++
文章平均质量分 71
松阳
我在路上走着,遇到了你,大家点头微笑,结伴一程
缘深缘浅,缘聚缘散,该分手时分手,该重逢时重逢
惜缘即可,不必攀缘
同路人而已
能不远不近地彼此陪伴着,不是已经很好了吗?
展开
-
进程控制
1、进程调用的头文件为。2、pid_t getpid() 获取本进程ID。pid_t getppid()获取父进程ID。 3、fork()返回值:在父进程中,返回新创建的子进程的PID在子进程中,返回0出现错误,返回负值4、原创 2011-09-08 20:34:51 · 1231 阅读 · 0 评论 -
C/C++面试程序题(二)——找中点、倒数n点、判断是否循环
一、一个单链表,不知道长度,写一个函数快速找到中间节点的位置。 物理中有这样一个事实,速度相差一倍的两辆车同时出发,慢车总是在路程的中点。所以就利用这个原理写了下面这个程序。 node* findmiddle(node *head){ node* v,*v2; if(!head){ return NULL; }原创 2011-10-11 21:27:32 · 3491 阅读 · 2 评论 -
C/C++面试程序题(一)——字符串反转、链表反转的递归、非递归实现
一、用递归方式、非递归方式写函数将一个字符串反转。 非递归方式: 这个是比较简单啦,注意到一半就得停住 char* reverse(char *str){ if(str != NULL){ int length=strlen(str); int i; char temp; for(i=0;i原创 2011-10-11 15:58:16 · 8808 阅读 · 1 评论 -
Linux 网络编程——TCP
一、TCP通信步骤TCP服务器部分:1、调用函数socket(),创建一个socket2、设置sockaddr_in信息,如要连接服务器的IP和端口等属性3、调用函数bind(),绑定IP地址、端口等信息到socket上4、调用函数listen(),设置允许的最大连接数5、调用函数accept(),等待来自客户端的连接请求6、调用函数send() 和 recv(原创 2011-09-15 19:46:13 · 2551 阅读 · 1 评论 -
50个c/c++源代码网站
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码 。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建 议,以进一步加强这方面的清单。 0、http://www.boost.org/1、http://snippets.dzone.com/tag/c/ -转载 2011-12-06 13:46:11 · 2649 阅读 · 2 评论 -
VS2008快捷键使用技巧
1,复制或删除一行代码时,不用先选择它如果你想复制一行代码,你只需要简单的按CTRL+c拷贝,然后按CTRL+v粘贴这行就可以了,而不需要选择整行的代码。如果你想删除一行代码,只需按CTRL+x就可以了。 2,取代其他编辑器里Ctrl+F的方便的增量查找用过ultraedit会对那两个上下搜索按钮印象深刻,Visual studio里有更厉害的。操作方法: 1).按Ctrl原创 2011-12-08 18:39:33 · 3465 阅读 · 0 评论 -
数据结构(二)——栈及实现、括号匹配
一、栈的概念与特点 一种特殊的线性表,它的插入和删除运算均在同一端进行。这一端被称为栈顶,另一端为栈底,插入称为进栈,删除称为出栈。有后进先出的性质。栈顶top相当于顺序表中的size,即元素个数。关于顺序表可以参考数据结构(一)——顺序表及实现 。 [注]没有a[n]这个元素。n是元素的数量二、栈的操作及实现1、结构体定义2、初始化原创 2011-09-17 15:18:37 · 6697 阅读 · 2 评论 -
Vector的使用:resize、size、reserve、capacity
#include#includeusing namespace std;int main(){ vector v ; v.resize(2); v[0]=0; v[1]=1; cout<<"size=" <<v.size()<<" v[0]= "<<v[0]<<" v[1]= "<<v[1]<<" capacity= "<<v.capacity()<<"原创 2012-02-06 15:03:22 · 2940 阅读 · 0 评论 -
vector用法 (一)
vector作为模板容器,有着不可替代的地位,仔细的学习方是正道... #include#include#includeusing namespace std;int main(){ //赋值不接受不同类型的,但是能够强转的可以// vector str(2,'a'); //wrong!! vector a(5,'a'); cout<<a[2]<<原创 2012-02-21 22:33:39 · 3716 阅读 · 0 评论 -
vector用法 (二) 迭代器
迭代器就是一个来回遍历的指针,这么想就方便理解了。 #include#includeusing namespace std;int main(){ vector ivec(5,1); /* iterator 感觉就相当于一个指针 * 指针类型根据每一个容器有所不同 * iter接受所有指针操作的方法 * 采用begin、end的赋值方原创 2012-02-22 19:09:41 · 6709 阅读 · 0 评论 -
printf、sprintf、vsprintf的使用取舍
在Windows中使用printf 有文字模式、命令列C语言程式写作历史的程式写作者往往特别喜欢printf函式。即使可以使用更简单的命令(例如puts),但printf出现在Kernighan和Ritchie的「hello, world」程式中一点也不会令人惊奇。我们知道,增强後的「hello, world」最终还是需要printf的格式化输出,因此我们最好从头开始就使用它。但有个坏转载 2012-03-16 17:34:00 · 4874 阅读 · 0 评论 -
CString 换行输出
直接CString strC=strA+"\r\n"+strB是不能实现换行的。(注意是双引号)这是因为除了要用/r/n外,还要都CEdit 的属性进行设置:Auto HScroll 设置为 FalseMultiLine 设置为 TrueWant Return 设置为 True。原创 2012-07-20 18:21:05 · 10991 阅读 · 2 评论 -
boost 时间与日期处理
导视:类特点缺点说明timer计时基类不适合大跨度时间适用大部分的普通计时progress_timer继承自timer 可以自动写入流中只精确到0.01s如果需要更精确,可派生个类,调用stream的precision设置原创 2013-04-17 17:20:48 · 13120 阅读 · 0 评论 -
cocos2d-x sqlite的使用,数据库操作的封装
本篇博客出自阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/8922054 移动平台要用到sqllite,发现cocos2d-x中没有专门的类对接。为了以后省事,就自己写了个封装。 数据库的形式是Key-Value。如果某种类的数据项过多,可以将大类作为表名,以便将来的拓展。 加密方面采用的是数原创 2013-05-13 20:00:45 · 7506 阅读 · 3 评论 -
使用boost::python的链接出错
被这个东西折磨了一个晚上,先是听度娘海扯胡诌,发现各种不靠谱。就自己研究,在几乎要放弃时解决了问题。 首先是调试库的问题。因为网上下下来的安装版python是没有调试库的,所以调试编不过。居然还有人说直接把.lib改个名就变成调试库了。我去了,这么巧?函数地址都一样??不知编过的兄弟用的是哪个版本。我的是python3.3,这个版本肯定不行。就采用猥琐的办法吧:#ifdef _DEBUG #原创 2013-06-16 21:29:51 · 3360 阅读 · 0 评论 -
数据结构(三)——队列及实现、循环队列实现
一、队列 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后原创 2011-09-17 17:03:50 · 23159 阅读 · 4 评论 -
Cocos2d-x 3.0开发(三)点击交互的四种处理
1、概述 在Cocos2d-x 3.0中,更改了dispatch机制。同时加入了两种新的交互形式:listener 和touchEvent回调。加上先前版本中的点击函数回调,与重写layer层的touch消息响应,构成了一个相对完整的交互模式。原创 2013-10-14 21:30:30 · 74805 阅读 · 47 评论 -
vim 安装Emmet插件
最近说好的要学做移动App,想来想去,还是先从基础搞起,先把失散多年的html捡捡。Emmet是vi的一个插件,它可以让我等更方便的编辑html。原创 2015-01-26 17:02:21 · 8609 阅读 · 2 评论 -
面试知识总结(一)
1、 数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字时间复杂度必须为o(N)函数原型: int find(int a[],int n){ int temp[n]={0}; int i; for(i=0;i<n;i++){ if(temp[a[i]] != 0){ return原创 2011-10-20 20:50:26 · 3436 阅读 · 5 评论 -
虚函数复习
虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。 下面是对C++的虚函数这玩意儿的理解。 一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始) 简单地说,那些被virtual关键转载 2011-10-14 19:55:48 · 1450 阅读 · 0 评论 -
C语言基础知识
1、+++的问题。 int i =1; int j =2; int k = i+++j; printf("%d" ,k); 输出k为3。 编译原理有关编译器在词法解析的时候,对原创 2011-09-07 16:57:59 · 1525 阅读 · 0 评论 -
Linux 信号通信
一、信号 信号(signal)机制是Unix进程间通信的一种机制。很多条件可以产生信号。 进程可以用kill 函数将信号发送给另一个进程,用户可以用kill命令发送信号。 信号有三种处理方式:1、忽略信号。通常情况下都按这种方式进行处理,但SIGKI原创 2011-09-10 15:19:54 · 1842 阅读 · 0 评论 -
笔试题strcpy写法
题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。转载 2011-08-25 19:45:57 · 1815 阅读 · 1 评论 -
Linux 共享内存
一、概念共享内存是被多个进程共享的一部分物理内存,是进程间共享数据的最快的一种方法。 二、实现分为两个步骤:1、创建共享内存。2、映射共享内存。1、创建 int shmget(key_t key, int size, in原创 2011-09-10 19:02:59 · 1702 阅读 · 0 评论 -
Linux 管道通信
一、定义 管道是单向的、先进先出的。它将一个程序的输入和另一个程序的输出连接起来。数据被一个进程读出后,将被从管道中删除。分为无名和有名管道两种。前者用于父进程和子进程间的通信,后者用于同一系统的两个进程间通信。 二、无名管道 int pi原创 2011-09-09 21:04:07 · 6954 阅读 · 1 评论 -
你真懂动态分配内存吗?不是所有人能都做对这四道题......
废话少说,上程序1、void GetMemory(char *p){ p = (char *)malloc(100);}void Test(void) { char *str = NULL; GetMemory(str); strcp原创 2011-09-13 20:11:12 · 2579 阅读 · 2 评论 -
Linux 多线程学习
一、多线程 VS 多进程 和进程相比,线程有很多优势。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护代码段和数据。而运行于一个进程中的多个线程,他们之间使用相同的地址空间。正是这样,同一进程下的线程之间共享数据空间,数据可以原创 2011-09-14 20:44:05 · 1832 阅读 · 1 评论 -
数据结构(一)——顺序表及实现
一、概念先了解一下线性表,毕竟顺序表和链表都是线性表。线性表就是有线性结构的表。什么是线性结构呢?线性结构是n个数据元素的有序集合。它有四个基本特征: 1.集合中必存在唯一的一个"第一个元素"; 2.集合中必存在唯一的一个"最后的元素";原创 2011-09-16 20:49:35 · 5353 阅读 · 2 评论 -
数据结构(四)——单链表 、带头结点的单链表、循环链表 及其实现
一、 链式存储 以结点的形式存储数据。除了存放一个结点的信息外,还需附设指针。 数据在内存中存储是不连续的,每个结点只能也只有它能知道下一个结点的存储位置。 二、单链表 单链表是线性表链式原创 2011-09-19 20:59:10 · 25805 阅读 · 5 评论 -
const用法
一、 const声明常量如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)二、转载 2011-08-25 19:39:52 · 1328 阅读 · 1 评论 -
数据结构(五)——双链表、链式栈、链式队列 及实现
一、双链表在单链表的基础上再增加一个指向它前驱的指针,就构成了双链表。所以双链表有三个变量:数据信息info、前驱指针llink、后继指针rlink。 二、双链表操作和实现 由于双链表也为单链表的一种变型,一些相似的操作就没一一列举,可以参原创 2011-09-20 14:19:42 · 4930 阅读 · 1 评论 -
sizeof用法和分析
一、 定义: sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。其返回值类型为size_t,在头文件stddef.h中定义。在32位系统中: char的sizeof值为1,char是我们编程能用的原创 2011-08-25 15:36:13 · 1808 阅读 · 0 评论 -
C++比C多了什么。。。(基础篇)
C++就是在C的基础上加了很多东西。有C基础,学C++就不是难事;有java基础,学C++就非常好理解;同时有C和java基础......学C++那就是一天的事。但是学精就不是说说这么简单了,什么都怕专业嘛~ 这篇博客旨在整理(有C基础的前提下)学习C++要注意的知识原创 2011-09-29 13:19:08 · 10063 阅读 · 1 评论 -
C++比C多了什么。。。(高级篇)
写完了基础的不同,在看看高级的一些用法吧。 真正的高手都差在深入的研究上,我估计也就算是个装高手的。关于基础的不同可以参见:C++比C多了什么。。。(基础篇) 一、模板1、函数模板 模板(Templates)使得我们可以生成通用的函数,这些函原创 2011-09-29 15:47:25 · 3993 阅读 · 0 评论 -
系统调用的方式访问文件
1、创建文件 int create(const char* filename , mode_t mode) 创建文件。filename为文件路径,mode为文件权限,如:S_IRUSR 可读;S_IRWXU 可读、可写、可执行。也可以用数字表示,如:0755。原创 2011-09-08 21:06:20 · 1521 阅读 · 0 评论 -
Linux消息队列
一、概念 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定的规则添加新消息;有读权限的进程则可以读走消息。读走就没有了。消息队列是随内核持续的。 只有内核重启或人工删除时,该消息才会被删除。在系原创 2011-09-13 16:21:28 · 2930 阅读 · 0 评论 -
数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
一、基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。满二叉树:所有终端都在同一层次,且非终端结点的度数为2。在满二叉树中若原创 2011-09-22 21:10:33 · 338537 阅读 · 44 评论