
C/C++
blue_jjw
这个作者很懒,什么都没留下…
展开
-
也谈指针运算
转自:http://tonybai.com/2010/02/23/also-talk-about-pointer-arithmetics/指针在C语言中的位置这里就不多说了,这里说一下C的指针运算。指针运算一般针对的是同一连续内存块,不同内存块之间的指针运算无意义,甚至可能导致异常情况。指针运算主要针对数组,常见的运算类型:+i, -i, ++, –以及 等。我们以+i操作转载 2013-04-18 14:09:16 · 619 阅读 · 0 评论 -
C/C++中static关键字详解
C/C++中static关键字详解 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它转载 2013-05-20 20:51:12 · 749 阅读 · 0 评论 -
C/C++中的const
常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。因此,定义或说明常类型时必须进行初始化。概述1. const有什么用途?在 c程序中,const的用法主要有定义常量、修改函数参数、修饰函数返回值等3个用处。在c++程序中,它还可以修改函数的定义体,定义类中某个成员为恒态函数,即不改变类中的数据成员。被const修改的东西都要受到强制保护,转载 2013-05-20 20:59:28 · 630 阅读 · 0 评论 -
死锁原因及解决、避免办法
死锁原因及解决、避免办法 死锁的条件 互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。 不可抢占条件(No pre-emption) :有些系统资源是不可抢占的,当某个进程已获得这转载 2013-05-20 21:49:43 · 1257 阅读 · 0 评论 -
select,poll,epoll区别
select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。对于单进程多线程,每个线程处理多个fd的情况,select是不适合的。1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费2.1转载 2013-05-20 21:15:03 · 594 阅读 · 0 评论 -
重载(overload)、覆盖(override)、隐藏(hide)的区别
重载(overload)、覆盖(override)、隐藏(hide)的区别 谈谈重载(overload)覆盖(override)与隐藏 转自http://blog.youkuaiyun.com/yanjun_1982/archive/2005/09/02/470405.aspx 这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一转载 2013-05-20 21:30:27 · 698 阅读 · 0 评论 -
面向对象的三个基本特征 和 五种设计原则
一、三个基本特征面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可转载 2013-05-20 21:33:25 · 734 阅读 · 0 评论 -
树——《数据结构与算法分析C++描述》
1. 预备知识一棵树是一些结点的集合。集合可以使空集;若不是空集,则树由称作根(root)的结点r以及零个或多个非空的子树组成,子树的根都被来自根r的一条有向的边所连接。每棵子树的根叫做根r的儿子,而r是每个子树根的父亲。没有儿子的结点称为叶结点,上图的叶结点是BCHIPQKLMN。有相同父亲的结点称为兄弟。从结点n1到nk的路径定义为结点n1,n2,…,n原创 2013-05-07 22:08:01 · 1121 阅读 · 0 评论 -
sizeof,终极无惑
0. 前向声明sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,转载 2013-05-14 11:41:06 · 557 阅读 · 0 评论 -
sizeof()用法汇总
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为转载 2013-05-14 11:42:13 · 568 阅读 · 0 评论 -
2013年阿里巴巴暑期实习招聘笔试题目及部分答案——5月5日
转自:http://50vip.com/blog.php?i=223网上各种标为2013年,实际上都是2012年或者更早的,下面的才是真正的2013年5月5日考试的卷子。答题说明:1.答题时间90分钟,请注意把握时间;2.试题分为四个部分:单项选择题(10题,20分)、不定向选择题(4题,20分)、填空问答(5题,40分)、综合体(1题,20转载 2013-05-07 00:00:31 · 1054 阅读 · 0 评论 -
表、栈和队列——《数据结构与算法分析C++描述》
1.抽象数据类型(ADT)抽象数据类型(abstract datatype, ADT)是带有一组操作的一些对象的集合。诸如表、集合、图以及与它们各自的操作一起形成的这些对象都可以看做是抽象数据类型。对于集合ADT,可以有像加(add)、删除(remove)、大小(size)以及包含(contains)这样一些操作。2.表ADT我们将处理形如A0,A1,A2,…,AN-1的表,表的大原创 2013-05-06 11:29:21 · 1269 阅读 · 0 评论 -
欧几里得算法求最大公因子——《数据结构与算法分析C++描述》
两个整数的最大公因子(gcd)是同时整除二者的最大整数。计算gcd(M,N),假设M>=N,如果不相等,可在程序中将它们互相交换long gcd(long m, long n){ while(n != 0) { long rem = m%n; m = n; n = rem; } return m;}算法分析:算法的运行时间是多少?看不出余数的值按原创 2013-05-04 22:07:21 · 1490 阅读 · 0 评论 -
简析多级指针解引用
转自:简析多级指针解引用指针是C语言中公认的最为强大的语法要素,但同时也是最难理解的语法要素,它曾给程序员带来了无数麻烦和痛苦,以致于在C语言之后诞生的很多新兴 语言中我们再也难觅指针的身影了。下面是一个最简单的C语言指针的例子:int a = 5;int *p = &a;其中p就是一个指针变量。如果C语言中仅仅存在这类指针,那显然指针不会形成“大患”。经常地我转载 2013-04-18 14:10:25 · 1602 阅读 · 0 评论 -
Linux Socket编程(不限Linux)
转自:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务转载 2013-04-18 14:18:32 · 722 阅读 · 0 评论 -
简析指针与多维数组
转自:http://tonybai.com/2013/03/28/pointer-and-multi-dimension-array-in-c/上一篇文章中对多级指针做了简要分析,其实只有当指针与多维数组以及函数联合在一起使用时,麻烦才算真正到来。零、数组与数组名C语言中的数组的一般声明形式如下:T arr_name[n]; /* T为类型,n为数组元素个数 *转载 2013-04-18 14:07:53 · 730 阅读 · 0 评论 -
C,C++开源项目中的100个Bugs
转自:http://tonybai.com/2013/04/10/100-bugs-in-c-cpp-opensource-projects/俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMake、MySQ转载 2013-04-18 14:05:30 · 1253 阅读 · 0 评论 -
c++字符串操作函数
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用转载 2013-05-17 14:05:16 · 697 阅读 · 0 评论 -
《程序员面试宝典3》大量错误(50+)纠正表
《程序员面试宝典》第3版大量错误纠正表 以前随手翻了翻,想写这篇文章没有写,现在完整看了下就记录下来了。找工作的同学大部分都会看《程序员面试宝典》,本来看过去就可以了。但我还是要把自己记录的大量错误指出来,以免误人子弟。这本书错误漏洞百出,编辑质量太差。虽然它一版再版,一再流传,却没有一个勘误表,错误改了很多,还有很多依然存在。 因此提醒读者一定要自己动转载 2013-05-18 11:55:45 · 946 阅读 · 0 评论 -
strcmp和stricmp、strcmpi三者之间的区别(C++)
#include #include 原型:extern int strcmp(const void *s1, const void *s2);用法:#include 功能:比较字符串s1和s2是否相同,区分大小写。说明:如果s1=s2则返回零,否则返回非零值。原型:extern int stricmp(char *s1转载 2013-05-04 20:49:21 · 15224 阅读 · 0 评论 -
const 指针与指向const的指针
当使用带有const的指针时其实有两种意思。一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容。听起来有点混淆一会放个例子上来就明白了。 先说指向const的指针,它的意思是指针指向的内容是不能被修改的。它有两种写法。 const int* p; (推荐) int const* p; 第一种可以理转载 2013-05-04 20:50:09 · 561 阅读 · 0 评论 -
高效的幂运算——《数据结构与算法分析C++描述》
计算X的N次方,最明显的算法是使用N-1次乘法自乘,但是使用递归算法更好,分奇偶分别处理。long pow(long x, long n){ if( n ==0 ) return 1; if( n ==1 ) return x; if(isEven(n)) return pow(x*x, n/2); else return pow(x*x, n/2)*x;}原创 2013-05-04 22:23:54 · 1001 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结
转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借转载 2013-07-05 15:15:19 · 732 阅读 · 0 评论