07 2013 档案
摘要:最近看许多公司笔试都考这几方面的内容,于是乎就搜索了一下,把这几个知识点总结以下,以增强基础,以及应付未来的笔试
阅读全文
摘要:extern "C"的双重含义
1.被它修饰的目标是“extern ”;
2.被它修饰的目标是“C ”。
让我们来详细解读这两重含义。
被extern "C"限定的函数或变量是extern类型的。
阅读全文
摘要:关于extern “C”的来龙去脉,摘录的三篇网友文章
阅读全文
摘要:2013-07-31 22:12:5822:12:58转自:百度空间忽然之间2010-05-15 01:22链接指示: extern "C" C和C++混合编程问题接上,继续对笔试题进行分析分析以下一段代码:/*=======sum.h=========*/#ifndef SUM_H#define SUM_H#include int sum(int a,int b);#endif;/*=======sum.c=========*/#include "sum.h"int sum(int a,int b){int c=a+b;return c;}/*====
阅读全文
摘要:不久前有人在面试的时候被问及面向对象和面向过程的本质区别是什么?对于这个问题小生
也没有做过多的思考,今天在此做一个总结,探求一些面向对象和面向过程本质的区别在哪里。
阅读全文
摘要:本文写给C或C++语言初学者。
论坛中,常有初学者问“学C++语言前是否要先学C?”。我认为这是个伪问题。问题本身的答案并不是提问人真正想要的。
阅读全文
摘要:1、面向对象相对面向过程的优点
1)结构清晰。使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,结果编程就更加富有人性化。
2)封装性。减小外部对内部的影响。封装将对象有关的数据和行为封装成整体来处理,使得对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。
3)容易扩展,代码重用率高。容易扩展,在大框架不变的情况下很容易就开发出适合自己的功能,实现简单,可有效地减少程序的维护工作量,软件开发效率高。
2、面向对象相对面向过程的缺点
1)增加工作量。如果一味地强调封装,当进行修改对象内部时,对象的任何属性都不允许外部直接存取,则要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
2)性能低。由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小的都开销很大。
阅读全文
摘要:透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.
三大特性是:封装,继承,多态
阅读全文
摘要:sizeof和sizeof(string)的问题 ,以及sizeof使用中的陷阱
阅读全文
摘要:http://www.cnblogs.com/wenyang-rio/archive/2013/01/05/2845973.html
注册博客园快两年了,之前偶尔来这里看看一些大牛连载的技术文章或者发些问题求助帖。最近几个月空闲时间多了点,几乎每天都会来博客园看看,时不时写些自己的技术心得与总结。
阅读全文
摘要:简介
在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程。但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行。因此线程被引入操作系统。
阅读全文
摘要:存储管理的的基本目的:提高内存的使用率并方便用户使用内存。
此处给出存储管理的一些基本概念
阅读全文
摘要:在网上搜索了很多种方法来解决都没有凑效,当然我没有重装系统,这会很麻烦。最后,没办法,我首先降低了UAC设置,然后进入控制面板准备卸载掉IIS再次重装一次试试,结果成功了。
下面就是我的具体解决方案:
(1)进入UAC,将其调至最低。
具体操作方法:点击[开始],在程序搜索中输入UAC,回车后则进入UAC控制界面。
阅读全文
摘要:信号量是最早出现的用来解决进程同步与互斥问题的机制(也可实现进程通信),包括一个称为信 号量的变量及对它进行的两个原语操作。信号量为一个整数,我们设这个信号量为:sem。很显然,我们规定在sem大于等于零的时候代表可供并发进程使用的 资源实体数,sem小于零的时候,表示正在等待使用临界区的进程的个数。根据这个原则,在给信号量附初值的时候,我们显然就要设初值大于零。
p操作和v操作是不可中断的程序段,称为原语。P,V原语中P是荷兰语的Passeren,相当于英文的pass, V是荷兰语的Verhoog,相当于英文中的incremnet。
阅读全文
摘要:当参数不合法的时候,究竟是if else 判断后返回一个值还是直接来个Exception ?
如果是 if else 的话,有什么好处 ?
如果是 exception 的话,又有什么好处 ?
或者是根据不同情况来定?
阅读全文
摘要:断言是一种让错误在运行时候自我暴露的简单有效实用的技术。它们帮助你较早较轻易地发现错误,使得整个调试过程效率更高。
断言是布尔调试语句,用来检测在程序正常运行的时候某一个条件的值是否总为真,它能让错误在运行时刻暴露在程序员面前。使用断言的最大好处在于,能在更解决错误的发源地的地方发现错误。断言具有以下特征:
n 断言是用来发现运行时刻错误的,发现的错误是关于程序实现方面的。
n 断言中的布尔表达式显示的是某个对象或者状态的有效性而不是正确性。
n 断言在条件编译后只存在于调试版本中,而不是发布版本里。
n 断言不能包含程序代码。
n 断言是为了给程序员而不是用户提供信息。
阅读全文
摘要:对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性。不过,等你开始应用计算机语言来工作的时候,你会发现,面对不同的需求你需要一次又一次去用代码重复实现这些已经成熟的算法,而且会一次又一次陷入一些由于自己疏忽而产生的bug中。这时,你想找一种工具,已经帮你实现这些功能,你想怎么用就怎么用,同时不影响性能。你需要的就是STL, 标准模板库!
西方有句谚语:不要重复发明轮子!
STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发现你已不用拘泥于算法本身,从而站在巨人的肩膀上去考虑更高级的应用。
排序是最广泛的算法之一,本文详细介绍了STL中不同排序算法的用法和区别。
阅读全文
摘要:之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。
阅读全文
摘要:前言: string 的角色
1 string 使用
1.1 充分使用string 操作符
1.2 眼花缭乱的string find 函数
1.3 string insert, replace, erase 2 string 和 C风格字符串
3 string 和 Charactor Traits
4 string 建议
5 小结
6 附录前言: string 的角色
C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触perl, php, 和Shell脚本以后,开始理解了以前为什么有人说C++文本处理不方便了。
阅读全文
摘要:vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性。而且vector是STL推荐使用的默认容器,除非你知道你有特殊需要,使用vector不能满足你的需求,例如需要容器在head和tail高效的插入和删除,或者在任何位置高效的删除和插入操作,那么你可能使用deque或者list更加合适。
vector是连续内存容器,换句话说,标准要求所有标准库实现的时候,vector中的元素的内存必须是连续的。所以对于插入和删除的时间复杂度是很高的,因为删除或者插入的时候,需要元素的移动,即元素复制拷贝。
vector的内部实现一般需要用到placement new ,所以效率很高,因为很多的时候,只要我们是使用得到,就可以省去很多的内存分配开销。而且vector的使用,元素可以没有默认的构造函数,但是需要拷贝构造函数的存在,这是使用CArray所无法实现的。
阅读全文
摘要:Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。
阅读全文
摘要:总结两个要点:
1.计算机的伪随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。
2.只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟
阅读全文
摘要:main()函数是C应用程序的入口点,编译后的可执行文件都是从main函数开始执行的。在执行过程开始时,会执行main()函
数,在main()函数执行完毕时,执行过程就结束了。主函数main()可以有或没有参数列表,通常最多支持3个参数。
阅读全文
摘要:C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法.
阅读全文
摘要:包括两篇博文,介绍迭代器的基本用法。
阅读全文
摘要:学完c++快一年了,感觉很有遗憾,因为一直没有感觉到c++的强大之处,当时最大的感觉就是这个东西的输入输出比C语言要简单好写。
后来我发现了qt,opencv,opengl,原来,c++好玩的狠。
在这些图形库之外,最常用的可能就是STL,这个东西由于当时学c++的时候迷迷糊糊,完全是一头雾水,上学期数据结构之后开始有点儿开窍了,现在把才c++STL中常用的函数,用法贴一下,也是记录一下,希望能给一样迷糊的盆友们一些帮助。
阅读全文
摘要:2013-07-09 18:21:26转自:http://blog.csdn.net/xhz1234/article/details/6511344EOF是指文件的结束符,是一个宏定义 借助于getchar 与putchar 函数,可以在不了解其它输入/输出知识的情况下编写出数量惊人的有用的代码。最简单的例子就是把输入一次一个字符地复制到输出,其基本思想如下:读一个字符while (该字符不是文件结束指示符)输出刚读入的字符读下一个字符将上述基本思想转换为C语言程序为:#include /* copy input to output; 1st version */main(){int c;c
阅读全文
摘要:2013-07-09 18:52:07转自:http://www.cnblogs.com/hdchild/archive/2009/11/19/1606457.html首先给出《The_C_Programming_Language》这本书中的例子:#includeintmain(){intc;c =getchar();while(c!=EOF){putchar();c=getchar();}return0;}这里主要解释下为什么要用int型来接受getchar函数。很多时候,我们会写这样的两行代码:char c;c = getchar();这样就很有可能出现问题。因为getchar函数除了返回
阅读全文
摘要:C++标准库bitset类型的使用以及存储方式
阅读全文
摘要:2013-07-07 17:10:10转自:http://blog.csdn.net/tianshuai11/article/details/75882321.别为你自己和别人下定论,你所看到听到的可能只是一面,为这个失去可能的朋友,很不值。2.你可以有喝醉的时候,我们可以接受,但是你要明白和真正的朋友一醉才能让伤心事方休,否则,你只会是别人的谈资和笑柄。3.如果你的个性让很多人对你敬而远之,那么你的个性是失败的,个性的成功在于能吸引,而不是能排斥。4.别怕丢人,如果你实在不行就别怕丢人,行的话,建议你们-去追求丢人,那是一种成功的尝试,至于为此笑话你的人,你可以把他们从你将来人生对手的名单中
阅读全文
摘要:2013-07-07 17:06:11转自:http://blog.csdn.net/tianshuai11/article/details/7578068一位同学,毕业季找工作。有意向的公司好几家,其中一家开出的条件最优厚,解决户口,底薪就抵得上别家单位的合计收入。更重要的是,还分房子、配车,但这一切都是有条件的,合约上写明,“要为公司服务20年”。同学再三考虑后,放弃了这一机会。很快,前一轮淘汰的某人取代了他,众人都为同学惋惜,他却不以为意。过了些日子,取代他的人在博客上写道:上当了,这家公司是骗子。“种种骗局后,想走,竟被罚了20年的违约金”。众人又回过头赞同学聪明,同学一脸愕然,他坦言
阅读全文
摘要:2013-07-07 17:04:59转自:http://blog.csdn.net/tianshuai11/article/details/7400063他年收入100多万开着一辆宝马5,天天被应酬折腾的要死要活,真想狠狠心不干了,当初干嘛非要自己创业,当年在那家外企也能挣个四五十万,加上些油水,能弄个大几十万,比自己干不知道要轻快多少!五险一金有公司给上着,多好啊,再看看现在,看看老婆孩子,还有跟着自己吃饭的好几十人,哪能说放手就放手,硬着头皮接着干吧,这不,一个猿类又给他打电话了,不知道又要干啥,唉。。。。。。。。。。。他年收入50多万开 着一辆a4l,天天琢磨着什么时候能换一辆q7或者
阅读全文
摘要:2013-07-07 17:03:23转自:http://blog.csdn.net/tianshuai11/article/details/7588211一、女浴室起火,里面人乱作一团,赤身往外跑,只见大街上白花花一大群,一老者大喊“快捂住”,众裸女突然醒悟,但身上要紧部位有三处,手忙脚乱捂不过来,不知所措。这时老者又大喊:“捂脸就行,下面都一样!”【此事的重要启示:在特殊情况下抓工作不可能面面俱到,要抓住重点。】二、某日,女秘书神色凝重地说:王总,我怀孕了。 王继续低头看文件,然后淡淡一笑:我早结扎了。 女秘书楞了一会媚笑道:我和您开玩笑呢! 王抬起头看了她一眼,喝了口茶说:我也是。【此事
阅读全文
摘要:2013-07-04 21:16:01转自:http://blog.csdn.net/tianshuai11/article/details/81218811 、 OSI ( Open System Interconnect ):开放系统互联,是一个七层的计算机网络模型 分别为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 TCP/IP ( Transmission Control Protocol/Internet Protocol ):传输控制协议 / 因特网互联协议,是一个四层的计算机网络模型 分别为:网络接口层、网络层、传输层和应用层。 结合 OSI 和 TCP/IP
阅读全文
摘要:2013-07-04 21:15:02转自:http://blog.csdn.net/tianshuai11/article/details/812204331 、电信网络分类电信网络电路交换网络分组交换网络FDMTDM虚电路网络数据报网络32 、网络按地域范围分类? 局域网、城域网、广域网。33 、网络按使用者分类为:公共网和专用网。34 、网络的拓扑结构主要有:星形、总线型、环形以及树型、全连接、不规则网状。35 、计算机网络体系结构? 实际是分层加每层对应的协议集合。协议包括三个组成部分: 语法:数据与控制信息结构或格式; 语义:需要发出何种控制信息,...
阅读全文
摘要:2013-07-04 21:11:32转自:http://blog.csdn.net/shadowkiss/article/details/65521441、OSI(Open System Interconnect):开放系统互联,是一个七层的计算机网络模型,分别为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。TCP/IP(Transmission Control Protocol/Internet Protocol):传输控制协议/因特网互联协议,是一个四层的计算机网络模型,分别为:网络接口层、网络层、传输层和应用层。结合OSI和TCP/IP产生了一个五层结构,分别为:物理层
阅读全文
摘要:操作系统常见面试题总结
1、什么是进程(Process)和线程(Thread)?有何区别?
阅读全文
摘要:所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
阅读全文
摘要:在回过头来看看标准程序库,这个程序库涵盖范围相当广大,提过了许许多多好用的功能。正是因为这样标准程序库中class的名称和函数名与第三方提供的程序库中的class名或是函数名发生名字冲突的可能性大大增大。为了避免这个问题的发生,标准委员会决定将标准程序库中每一样东西都放在namespace std中。但是这么做同时有引来了一个新的问题。很多C++程序代码依赖那些已经存在很多年的C++ “准”标准程序库(C++迟迟未标准化才导致这些情况的发生),例如iosteam.h,complex.h等等。
为了解决这个新出现的问题,标准化委员会决定设计一些新的头文件名,给那些穿上std外衣的组件所使用。把C++头文件的.h去掉,于是就有前面出现的iostream,同样C的头文件也做了相同的处理,同时在前面加上了一个字母c,以表示是C的头文件(感觉上有中种族歧视的感觉)。同时标准化委员会声明就有的C++头文件将不再列于被支持的名单之中了,而旧有的C头文件为了满足“对C的兼容性”这个古老契约,仍然将继续存活下去。
阅读全文
摘要:函数名字修饰(Decorated Name)方式
函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多数情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会自动区分他们。
阅读全文
摘要:在参数传递中,有两个很重要的问题必须得到明确说明:
当参数个数多于一个时,按照什么顺序把参数压入堆栈
函数调用后,由谁来把堆栈恢复原装
在高级语言中,通过函数调用约定来说明这两个问题。
阅读全文
摘要:对_stdcall 的理解 (COM学习中的问题)(
阅读全文
摘要:_cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数无需要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。
阅读全文
摘要:网上的文章当提到std::sort和qsort的区别时,通常把它们的性能差异归因于qsort的反引用开销,我们在这里通过实验来测试看看是不是这样,并且判断std::sort的算法是否有较之于qsort代码更优的性能,或者反过来。
阅读全文
摘要:在这篇文章,我们把目光投向C++ STL中的函数std::sort。可能有些朋友要奇怪了:不是要讲qsort函数吗,怎么讲起std::sort来了?其实,std::sort是一个改进版的qsort,我们通过分析std::sort,可以了解到qsort函数的优点和不足之处,方便我们更好地理解qsort函数的性质,从而深刻理解快速排序的算法思想。
阅读全文
摘要:正如大家所知道的,快速排序算法是现在作为数据排序中很常用的算法,它集成在ANSI C的函数库中。我们经常使用快速排序,就是调用qsort函数,那么qsort函数里面到底是怎么实现的呢?我们现在就来看一看。
阅读全文
摘要:用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序
排序方法有很多种, 选择排序,冒泡排序,归并排序,快速排序等。
看名字都知道快速排序是目前公认的一种比较好的排序算法(我没听书速度比这快的了,特殊场合例外),比选择排序,冒泡排序都要快。这是因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。 这就是qsort。
阅读全文
摘要:2013-07-02 18:44:12转自:http://bbs.chinaunix.net/thread-1363165-1-1.html问题描述:如题,例如我有int f(int x){ if(x==2)return 1;//x不等于2的时候没有相应的返回语句}main(...){... printf("%d\n",f(3));...}这里printf的输出结果是个很奇怪的数,而且每次都一样!我想知道,既然f要求返回一个整数,那么在有的路径下没有显示的写return语句,这个return的值是编译器默认生成的吗? 还是返回了堆栈上的某个东西,实际上破坏了堆栈可能导致未定
阅读全文
摘要:Vector用法(C++ Primer中文版)
阅读全文