
C/C++
文章平均质量分 59
cywosp
这个作者很懒,什么都没留下…
展开
-
解决:Error spawning 'cmd.exe'
解决:Error spawning cmd.exe只需检查环境变量中的System Variables中的Path有没有这三项:%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;转载 2008-09-29 12:09:00 · 1507 阅读 · 1 评论 -
两道简单面试题的经典解法
1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n 解法一:long fn(long n){if(n{printf("error: n must > 0);exit(1);}if(0==n%2)return (n/2)*(-1);elsereturn (n/2)*(-1)+n;}解法二:long result( long n ){return -((n-1原创 2008-10-05 12:12:00 · 1203 阅读 · 2 评论 -
如何写出漂亮的代码
首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术、逻辑等。以下为写出漂亮代码的七种方法:1, 尽快结束 if语句例如下面这个JavaScript语句,看起来就很恐怖:1 function findShape(flags, point, attribute, list) {2 if(!findShapePoints(flags, point, attribute))转载 2008-12-19 11:56:00 · 1594 阅读 · 2 评论 -
IE8正式版引发VS2005和VS2008添加变量向导出错的解决方案
当中vs 2005或者vs 2008编写程序使用向导添加成员变量是会出现如下错误: D:/Program Files/Microsoft Visual Studio 9.0/VC/VCWizards/CodeWiz/MFC/Variable/HTML/2052/default.htm file:///D:/Program Files/Microsoft Visual Studio 9原创 2009-04-11 09:35:00 · 2038 阅读 · 2 评论 -
CString学习
CString 成员函数用法大全CString的构造函数CString( );例:CString csStr;CString( const CString& stringSrc );例:CString csStr("ABCDEF中文123456"); CString csStr2(csStr);CString( TCHAR ch, int nRepeat = 1 );例:CStrin转载 2009-05-03 14:15:00 · 854 阅读 · 0 评论 -
初学者学习C++的50条忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发转载 2009-05-08 23:26:00 · 858 阅读 · 0 评论 -
C++经典书籍解读
C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C+ +的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C#的狂转载 2009-05-08 23:25:00 · 902 阅读 · 0 评论 -
学习C语言并精通C语言
程序员之路──如何学习C语言学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。 一、要读就读好书,否则不如不读 所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍转载 2009-05-09 00:12:00 · 1460 阅读 · 1 评论 -
c函数编写规范
版权和版本 ——————— 好的程序员会给自己的每个函数,每个文件,都注上版权和版本。 对于C/C++的文件,文件头应该有类似这样的注释: /************************************************************************ * * 文件名:network.c * * 文件描述:网络转载 2009-05-08 23:36:00 · 3046 阅读 · 0 评论 -
Linux C语言学习笔记
1、int 4字节 long 8字节 float 4字节 double 8字节 long double 16字节2、一个字符变量只能存放一个字符、一个字节存放一个字节 char c; c = a; c = /034 c = /n c = /x65 c = 65 c = 010原创 2010-01-24 14:37:00 · 986 阅读 · 0 评论 -
c语言全局变量和局部变量
c语言全局变量和局部变量1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用:: (注:在Linux中用gcc编译可能会出错,需要用g++编译)局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义转载 2010-01-30 23:06:00 · 2029 阅读 · 0 评论 -
C语言 BMP图片处理
关键字: c,c++,bmp,24位,图片,处理BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。在系统中以BMP为扩展名保存。 打开Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。这转载 2010-04-17 22:23:00 · 1887 阅读 · 1 评论 -
ASCII对照表
信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是,以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表,它的全称是“美国信息交换标准代码”。八进制十六进原创 2010-04-18 23:41:00 · 747 阅读 · 0 评论 -
C/C++中的宏
宏定义了一个代表特定内容的标识符。预处理过程会把源代码中出现的宏标识符替换成宏定义时的值。宏最常见的用法是定义代表某个值的全局符号。宏的第二种用法是定义带参数的宏,这样的宏可以象函数一样被调用,但它是在调用语句处展开宏,并用调用时的实际参数来代替定义中的形式参数。1.#define指令#define预处理指令是用来定义宏的。该指令最简单的格式是:首先神明一个标识符,然后给出转载 2010-04-22 00:30:00 · 801 阅读 · 0 评论 -
c操作翻转字符串
#include#include#include /** 翻转*/char *mystrrev(char *arr){ if (!arr) { return NULL; } char *temp = arr; char t; int leng = strlen(arr) + 1; int l = (int)(leng原创 2010-04-29 21:52:00 · 1067 阅读 · 0 评论 -
c语言代码简单回文判断
#include#include#include/** arr[] 字符数组* halNum 字符数组的一半* Totmun 字符数组的总长度*/bool charf(char arr[], int halNum, int TotNum){ if (!arr) { return fal原创 2010-04-29 23:53:00 · 2478 阅读 · 0 评论 -
C/C++位域
大端和小端字节序这个很简单,就是起始点该怎么确定。先看一个程序:union { struct { unsigned char a1:2; unsigned char a2:3; unsigned char a3:3; }x; unsigned char b; }d;int main(int argc, char* argv[]) { d.b = 100;转载 2010-07-11 22:09:00 · 826 阅读 · 0 评论 -
#pragma 预处理指令详解
<br /><br />在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。<br />#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。<br />依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 <br /> 其格式一般为: #pragma para <br /> 其中para为参数,下面来看一些常用的参数。 <br /> <br /转载 2010-07-21 01:09:00 · 849 阅读 · 0 评论 -
面试题目总结
<br /><br />1. char p[]和char *p的区别。<br />(1)<br />char *GetString(void)<br />{<br /> char p[] = "Hello world";<br /> return p;<br />}<br />void main()<br />{<br /> char *str = NULL;<br /> str = GetString();<br /> cout << str << endl;<br />}<转载 2010-07-21 01:08:00 · 899 阅读 · 0 评论 -
预处理指令
<br /><br />一、预处理的由来:<br />在C++的历史发展中,有很多的语言特征(特别是语言的晦涩之处)来自于C语言,预处理就是其中的一个。C++从C语言那里把C语言预处理器继承过来(C语言预处理器,被Bjarne博士简称为Cpp,不知道是不是C Program Preprocessor的简称)。<br /><br />二、常见的预处理功能:<br />预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种。<br />文件转载 2010-07-21 01:10:00 · 755 阅读 · 0 评论 -
sizeof(struct var) 的长度如何计算
<br /><br />struct MyStruct<br />{<br /> double dda1;<br /> char dda;<br /> int type<br />};<br />对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:sizeof(MyStruct)=sizeof(double) sizeof(char) sizeof(int)=13。但是当在VC中测试上面结构的大小时,你会发现sizeof(MyStruct)为16转载 2010-07-21 01:10:00 · 1155 阅读 · 0 评论 -
C语言中位域(bit struct)和#pragma pack(n)指令对其影响
<br />刚才看INTERNETWORKING with TCP/IP Volume 3的时候看到下面代码struct rtp{<br /> unsigned int rtp_cc:4<br />....<br />};<br />有点奇怪,不知道这个unsigned int rtp_cc:4是什么意思,照例google了下得到如下信息:<br />有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。<br />例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。转载 2010-08-01 16:53:00 · 1200 阅读 · 0 评论 -
gdb core 调试
1. 前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.2. gdb:有一种办法是, 我们用gdb的step转载 2011-09-01 16:31:20 · 1086 阅读 · 0 评论 -
深拷贝和浅拷贝之间的区别
哎,这个问题对我而言本身我觉得我是懂的,但是要我说我真不知道如何表达。但是面试就是喜欢问这个问题,不知道为何。难道这个问题很高级?好吧,既然这样,还是学习一下别人的专业答案吧。参考参考。Q:什么是浅拷贝(shallow copy)和深拷贝(deep copy)?A:转载 2011-09-02 15:36:59 · 1330 阅读 · 0 评论 -
求最大公约数问题
最大公约数问题,也不是个很难的问题,如果知道思路就很容易了。对于最大公约数问题,最简单的思路应该算是直接循环从1开始用两个数对其做除法了,找出最大公约数。不过这思路太没技术含量了,效率也低,如果数字很大,还是很慢的。一般解决最大公约数问题的方法是:辗转相除法(欧几里德算法)。转载 2011-09-02 15:37:58 · 1400 阅读 · 0 评论 -
C++ - 网络编程模型 - Linux EPOLL
C++ - 网络编程模型 - Linux EPOLL1.简介 Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。Linux 2.6内核中有提高网络I/O性能的新方法,即epoll 。 epoll是什么转载 2011-09-03 20:14:02 · 1755 阅读 · 0 评论 -
c/c++ 常考到的面试题
1.求下面函数的返回值(微软)int func(x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return转载 2011-09-02 15:19:10 · 1838 阅读 · 0 评论 -
经典考题——无重复字符问题(查找字符串中第一个无重复字符)
题目描述:寻求最佳的算法 编写一个高效率函数来找出一个字符串中第一个无重复字符.例如:”total”中的o,”teeter”中的r.要求算法效率优于O(n2)。分析:个人觉得,这个题目如果不强调效率就有点简单了吧,两层循环弄一下应该没问题了。但是另外一个角度,我觉转载 2011-09-02 15:33:44 · 2539 阅读 · 1 评论 -
不使用中间变量交换变量a、b变量
这是一道经典题目,很基础,但是经常考。题目描述:不用任何变量交换a、b两个变量。分析:交换两个变量的问题在c语言入门书籍中都有所涉及。在讲解c语言的函数的时候老师都会告诉我们,实参和形参的问题,下面的函数是不能完成交换两个变量的:void swap(int a,i转载 2011-09-02 15:40:39 · 3872 阅读 · 0 评论 -
从输入url到显示网页,后台发生了什么?
当在浏览器中输入一个 url 后回车,后台发生了什么?比如输入 http://hi.baidu.com/mianshiti 后,你看到了IT面试题的博客首页,那么这一切是如何发生的呢?简单来说有以下步骤:1. 查找域名对应的IP地址。这一步会依次查找浏览器缓存,系转载 2011-08-27 13:22:40 · 2217 阅读 · 1 评论 -
找到链表的倒数第m个节点
方法1:首先遍历链表,统计链表的长度N。然后再次遍历链表,找到第N-m+1个节点,即为倒数第m个节点。方法2:使用两个指针,并使它们指向的节点相距m-1个。然后同时向前移动两个指针,当一个指针指最后一个节点时,第二个指针指向倒数第m个节点。两个方法转载 2011-08-27 13:15:38 · 783 阅读 · 0 评论 -
memcpy 和 memmove 有什么区别?
memcpy 和 memmove 有什么区别?memcpy和memmove都是将源地址的若干个字符拷贝到目标地址。如果源地址和目标地址有重叠,则memcpy不能保证拷贝正确,但memmove可以保证拷贝正确。 例如:char src[20];// set转载 2011-08-27 13:34:46 · 1228 阅读 · 0 评论 -
const的含义及实现机制
const的含义及实现机制,比如:const int i,是怎么做到i只可读的?const用来说明所定义的变量是只读的。这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。转载 2011-08-27 13:35:48 · 5761 阅读 · 1 评论 -
tcp三次握手的过程,accept发生在三次握手哪个阶段?
tcp三次握手的过程,accept发生在三次握手哪个阶段?第一次握手:客户端发送syn包(syn=j)到服务器。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。第三次握手:客户端收到服务器的SYN+AC转载 2011-08-27 13:36:48 · 11934 阅读 · 2 评论 -
平面上画1999条直线,最多能将平面分成多少部分?
在一个平面上画1999条直线,最多能将这一平面划分成多少个部分?没有直线时有一个空间;(1)1条直线时,这条这些可以将这个空间分成两个;(1+1)2条直线时,第二条直线可以和第一条直线相交,这样第二条直线可以将两个空间分成四个;(1+1+2)....注意到画每转载 2011-08-27 13:38:42 · 5727 阅读 · 0 评论 -
c++中引用和指针有什么不同?指针加上什么限制等于引用?
引用不是一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。引用一经确定就不能修改。指针是一个变量,需要在内存中分配空间,此空间中存储所指对象的地址。由于指针是一个普通变量,所以其值还可以通过重新赋值转载 2011-08-27 13:42:00 · 1939 阅读 · 1 评论 -
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。不妨假设10G个整数是64bit的。2G内存可以存放256M个64bit整数。我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行转载 2011-08-27 13:54:44 · 3125 阅读 · 0 评论 -
找到两个单向链表的第一个公共节点
如果两个单向链表有公共节点,则两个链表会构成Y型结构,最后一个节点相同。我们可以从头开始遍历两个链表,找到最后一个节点的指针,设为p_a,p_b。同时记录下两个链表的长度len_a,len_b(假设len_a >= len_b)。如果p_a == p_b,则说明两个链转载 2011-08-27 14:14:19 · 1613 阅读 · 1 评论 -
c语言中局部变量能否和全局变量重名?
局部变量可以与全局变量同名。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。要用全局变量,需要使用"::"。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。转载 2011-08-27 14:15:09 · 9238 阅读 · 1 评论 -
如何找出字典中的兄弟单词
给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有多少个兄弟单词?答案: 使用hash_map和链表。 首先定义一个key,使得兄弟单词有相同的key,不是转载 2011-08-27 14:20:49 · 2116 阅读 · 0 评论