随笔分类 -  C/C++

C++面试题-String函数实现
摘要:C++面试题-String函数实现面试中经常会出现让应聘者写出string的构造函数、析构函数等具体实现,有人说会了这道题,那么C++的基础知识可以说是会了60%.而且在前几天我同学参加的面试中也出现了这道题目,足以证明不负其名。为以后实习工作打算,现在将其总结一下。在网上搜了搜,发现很多文章列出了实现代码,但在重载“赋值函数”时都将operator错写成了operate,大家在参考代码的时候一定要注意。为方便测试,我还重载了输出符“>”。最后给出了测试代码。#include using namespace std;class String{public:String(const cha 阅读全文
posted @ 2013-05-10 09:32 道法自然smile 阅读(524) 评论(0) 推荐(0)
c++内存分配
摘要:void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, “hello world”);printf(str);}请问运行Test函数会有什么样的结果?答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的 str一直都是 NULL。strcpy(str, “hello world”);将使程序崩溃。char *GetMemory(void){char p[] = “hello world”;return p;}voi 阅读全文
posted @ 2013-05-08 22:50 道法自然smile 阅读(152) 评论(0) 推荐(0)
win32编程入门
摘要:Win32 程序开发的流程message based, event drivenWin32程序是message based, event driven。也就是说Win32程序的运行是依靠外部不断发生的事件来驱动的,也就是说,程序不断等待(有一个while循环),等待任何可能的输入,然后做判断,再做适当的处理。因此Win32程序只需要做好如下几件事情就可以了:1. 定义窗口的外观;2. 定义当不同的事件发生时,程序做什么样的反应(定义窗口处理函数);3. 写一个While循环,不断检测新事件的发生,并将其发送给不同的窗口处理函数程序进入点WinMainmain是一般C程序的进入点:int mai 阅读全文
posted @ 2013-05-08 17:56 道法自然smile 阅读(320) 评论(0) 推荐(0)
KMP字符串模式匹配详解
摘要:KMP字符串模式匹配详解来自CSDN A_B_C_ABC网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一.简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], char T [ ], int pos ){/*若串S中从第pos(S的下标0≤posS[0]!= S[1],S[1] != S[2],所以S[1]!= T[0],S[2] != T[0].还是从理论上间接比较了。有人疑问又来了,你分析的是不是特殊轻况啊。假设S不变,在 阅读全文
posted @ 2013-05-06 19:56 道法自然smile 阅读(305) 评论(0) 推荐(0)
VS2008技巧,非常实用,非常提高效率。
摘要:VS2008技巧,非常实用,非常提高效率。1,Visual Studio 2008自带的1000多个 Windows 系统使用的各种图标、光标和动画文件在Visual Studio 2008的安装目录下,\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\2052文件夹下面,有一个VS2008ImageLibrary.zip,这个文件里面将常用的Windows系统图标、光标和动画文件集中到了一起。包括Office、Win9x、WinVista和WinXP等系统使用的,可以免费使用哦。2,删除多余的using指令,并且排序当我们新一个类 阅读全文
posted @ 2013-05-03 20:46 道法自然smile 阅读(436) 评论(0) 推荐(0)
C++中Int转换成String
摘要:C++中Int转换成StringPreviousNext一、使用atoi说明:itoa( int value, char *string, int radix );第一个参数:你要转化的int;第二个参数:转化后的char*;第三个参数:你要转化的进制;举例://-------------------------------------//功能:C++ int 转 string (使用atoi)//环境:VS2005//-------------------------------------#include "stdafx.h"#include using namespa 阅读全文
posted @ 2013-05-03 20:17 道法自然smile 阅读(1052) 评论(0) 推荐(0)
c++虚函数解析
摘要:C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有 阅读全文
posted @ 2013-05-01 23:58 道法自然smile 阅读(183) 评论(0) 推荐(0)
c++面试题之内存分配
摘要:1:c中的malloc和c++中的new有什么区别malloc和new有以下不同:(1)new、delete 是操作符,可以重载,只能在C++中使用。(2)malloc、free是函数,可以覆盖,C、C++中都可以使用。(3)new 可以调用对象的构造函数,对应的delete调用相应的析构函数。(4)malloc仅仅分配内存,free仅仅回收内存,并不执行构造和析构函数(5)new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。注意:malloc申请的内存空间要用free释放,而new申请的内存空间要用delete释放,不要混用。因为两者实现的机理不同。2. 阅读全文
posted @ 2013-03-24 13:14 道法自然smile 阅读(706) 评论(0) 推荐(0)
【STL】list基础(转)
摘要:各个容器有很多的相似性。先学好一个,其它的就好办了。先从基础开始。先看看他们的分类吧标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。非标准关联容器hash_set、hash_multiset、hash_map和hash_multimap。(各容器成员对比见:【STL】各容器成员对比表)先看看list。listSTL中的list就是一双向链表,可高效地进行插入删除元素。list不支持随机访问。所以没有 at(p 阅读全文
posted @ 2013-03-18 17:45 道法自然smile 阅读(203) 评论(0) 推荐(0)
C/C++ 笔试、面试题目大汇总2(转)
摘要:继续 ~~~~~~~~~一.找错题试题1:void test1() { char string[10]; char* str1 = "0123456789"; strcpy( string, str1 ); }试题2:void test2() { char string[10],str1[10]; int i; for(i=0; i= - EPSINON) && (x =”或“<=”形式。如果写成if(x == 0.0),则判为错,得0分。试题2:以下为WindowsNT下的32位C++程序,请计算sizeof的值void Func ( char st 阅读全文
posted @ 2013-03-18 17:42 道法自然smile 阅读(252) 评论(0) 推荐(0)
C/C++ 笔试、面试题目大汇总(转)
摘要:这些东西有点烦,有点无聊。如果要去C++面试就看看吧。几年前网上搜索的。刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善。1.求下面函数的返回值( 微软)intfunc(x){intcountx=0;while(x){countx++;x=x&(x-1);}returncountx;}假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2.什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变 阅读全文
posted @ 2013-03-18 17:40 道法自然smile 阅读(254) 评论(0) 推荐(0)
C++多线程编程入门(转)
摘要:C++多线程编程入门(转)第1节 背景为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍。早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序。在大型机年代,计算能力是一种宝贵资源。对于资源拥有方来说,最好的生财之道自然是将同一资源同时租售给尽可能多的用户。最理想的情况是垄断全球计算市场。所以不难理解为何当年IBM预测“全球只要有4台计算机就够了”。这种背景下,一个计算机能够支持多个程序并发执行的需求变得十分迫切。由此产生了进程的概念。进程在多数早期多任务操作系统中是执行工作的基本单元。进程是包含程序指令和相关资源的集合。每个进程和其他进程一起参与调度,竞争CPU 阅读全文
posted @ 2013-03-18 10:58 道法自然smile 阅读(233) 评论(0) 推荐(0)
Linux下基于C/C++的Socket编程基础
摘要:Linux下基于C/C++的Socket编程基础什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返 回一个整型的Socket描述符,随... 阅读全文
posted @ 2013-03-18 10:57 道法自然smile 阅读(336) 评论(0) 推荐(0)
C++ Socket编程步骤
摘要:sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。服务器端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:绑定套接字到一个IP地址和一个端口上(bind());3:将套接字设置为监听模式等待连接请求(listen());4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());5:用返回的套接字和客户端进行通信(send()/recv());6:返回,等待另一连接请求;7:关闭套接字 阅读全文
posted @ 2013-03-18 10:54 道法自然smile 阅读(267) 评论(0) 推荐(0)
Visual C++ 6.0的常用快捷键(来自EmanLee, Eman Lee's Space )
摘要:F1-F12F1显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容(需要安装MSDN才能使用)F2书签功能: Ctrl+F2 --在某行设置一个书签(再按一次是取消)F2 --跳到下一个书签位置Shift+F2 --跳到上一个书签位置Ctrl+Shift+F2 --删除所有书签F3查找: Ctrl+F3 --在文件中查找,如果当前光标在一个字符串上,那么自动查找此字符串.相似的有Ctrl+FF3 --查找文件中下一个串Shift+F3 --查找文件中上一个串F4如果是编译后或者Find in Files后,可以逐条定位.Ctrl+F4 --关闭文件Alt+F4 --关闭VC( 阅读全文
posted @ 2013-03-18 10:36 道法自然smile 阅读(272) 评论(0) 推荐(0)