C/C++
wangqinghao
这个作者很懒,什么都没留下…
展开
-
面试试题
[cpp] view plaincopy/************************************************************************/ /* A+B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav转载 2013-11-03 20:26:49 · 964 阅读 · 0 评论 -
printf的格式控制的完整格式
% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少。②-:有-表示左对齐输出,如省略表示右对齐输出。③0:有0表示指定空位填0,如省略表示指定空位不填。④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=转载 2012-10-01 18:58:13 · 585 阅读 · 0 评论 -
你说那个copy更好呢?
那个copy函数更好? 读者你认为呢?在某有点小名气的IT书上看到,作者说他写的copy函数比微软的strcpy强? 请读者来评价吧,到底哪个更好? char× Netcpy(char* dst,const char* src){ assert(dst != NULL && src != NULL); char* cp = dst;原创 2012-09-27 10:36:22 · 517 阅读 · 0 评论 -
结构体字节对齐
在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因: 1)某些平台只能在特定转载 2012-09-26 23:08:37 · 539 阅读 · 0 评论 -
VS2010中进行OpenMP并行程序设计
OpenMP是一个支持共享存储并行设计的库,特别适宜多核CPU上的并行程序设计。 在VS2010中项目的属性对话框中,左边框里的“配置属性”下的“C/C++”下的“语言”页里,将OpenMP支持改为“是/(OpenMP)”就可以支持OpenMP了。 先看一个简单的使用了OpenMP程序#include "stdafx.h"#includeint _tmain(i转载 2012-09-10 16:48:43 · 2144 阅读 · 0 评论 -
12个有趣的C语言面试题
摘要:12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer e转载 2012-09-08 15:30:58 · 416 阅读 · 0 评论 -
这里是离科学最近的地方——白春礼在国科大首届开学典礼上的致辞
亲爱的同学,尊敬的老师和各位来宾:大家好!今天,是一个特殊的节日,是一个可以载入史册的日子!今天,是中国科学院研究生院更名为“中国科学院大学”即“国科大”后的第一个开学典礼!站在这个新的更高的起点上,国科大全体师生必将团结一心、不懈奋斗,投身科研实践、书写创新篇章、创造光明未来!我们在场的每一个人,都应该为能有机会见证这个历史性时刻而感到幸运和自豪!在此,我代表中国科学院,代表原创 2012-09-07 16:04:28 · 5274 阅读 · 1 评论 -
解决频繁指针申请和释放所遇到的问题
#include "windows.h"#define pHEAP_BUF_MAX 253952 // 堆指针数组的大小int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ HANDLE hHeap; PVOID TBu转载 2012-09-06 17:23:29 · 897 阅读 · 0 评论 -
二进制数转十进制数函数
int BinaryToDecimal(const char *str){ int value = 0; if(str==NULL) return 0; for (int i = 0 ; i < strlen(str) ; i++){ if (atoi(&str[i]) == 0) { value <<= 1; continue; }原创 2012-08-27 23:01:12 · 2835 阅读 · 0 评论 -
C++中二进制、八进制、十六进制表示方法
一、(八进制表示,并十进制输出)std::cout 二、(十六进制表示,并十进制输出)std::cout 三、 由于不能采用采用C++直接表示二进制,所以采用bitset表示二进制方法一:#include#includeint main(){ int c=5; std::bitset a(c); std::cout return 0;}原创 2012-08-28 10:56:40 · 18201 阅读 · 0 评论 -
c++中BOOL和bool的区别
一、在网上找到了BOOL和bool的区别:1、类型不同BOOL为int型bool为布尔型2、长度不同bool只有一个字节BOOL长度视实际环境来定,一般可认为是4个字节3、取值不同bool取值false和true,是0和1的区别BOOL取值FALSE和TRUE,是0和非0的区别二、bool是标准C++数据类型,可取值true和false。单独占一个字节,转载 2012-09-13 21:23:57 · 3981 阅读 · 1 评论 -
MemCopy与MemMove
memmove在copy两个有重叠区域的内存时可以保证copy的正确,而memcopy就不行了,但memcopy比memmove的速度要快一些,如: char s[] = "1234567890"; char* p1 = s; char* p2 = s+2; memcpy(p2, p1, 5)与m转载 2012-09-17 18:47:57 · 701 阅读 · 0 评论 -
C++ 文件操作
Basic I/O:ios,istream,ostream,and iostreamFile I/O:ifstream,ofstream,and fstreamIn-memory I/O with C-style strings:istrstream,ostrstream,and strstreamIn-memory I/O with string objects stri原创 2013-08-31 18:35:39 · 756 阅读 · 0 评论 -
不使用临时变量交换两个整数
方法一 1: x = y - x; 2: y = y - x; 3: x = x + y;方法二 1: x = x ^ y; 2: y = x ^ y; 3: x = x ^ y;转载 2013-03-20 10:49:26 · 887 阅读 · 0 评论 -
gdal联合编译geos配置
gdal编译:去gdal目录下,修改nmake.opt文件,打开geos的开关。# Uncomment for GEOS supportGEOS_DIR=D:/GIS/geos-3.5.5GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOSGEOS_LIB = $(GEOS_DIR)/src原创 2012-12-10 19:56:31 · 3140 阅读 · 0 评论 -
C++ 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,转载 2012-11-18 20:38:35 · 477 阅读 · 0 评论 -
error LNK2001: unresolved external symbol __DllMainCRTStartup@12
使用VC2010创建一个空的DLL文件后,编译是提示错误:error LNK2001: unresolved external symbol __DllMainCRTStartup@12 解决的办法是:project右键选则properties,Linker->Input->Additional Dependencies填入:Debug:加入 msvcrtd.libRel原创 2012-11-09 10:46:33 · 4638 阅读 · 0 评论 -
get_pointer 成员函数小结
#include "iostream"class TestA{public: TestA(int a){ m_pA = new int(a); }; ~TestA(){ delete m_pA; m_pA = NULL; };public: int*m_pA; int* getA(){ return m_pA; }原创 2012-11-07 15:58:05 · 2478 阅读 · 1 评论 -
静态成员函数
类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同转载 2012-11-07 15:28:17 · 451 阅读 · 0 评论 -
前++和后++
对于内置数据类型:目前编译器的优化水平,前++和后++没什么区别,通过汇编代码可以证明。对于自定义数据类型如STL中,前++的效率要高于后++,所以STL中关于iterator都是用前++。原创 2012-11-06 16:46:16 · 627 阅读 · 0 评论 -
二分法查找
int FindKey(int m[],int n,int nValue){ int nFirst = 0; int nSecond = n; int nMid = (nFirst+nSecond)/2; while (m[nMid] != nValue){ if (m[nMid] > nValue){ nSecond = nMid; } else原创 2012-09-22 10:28:56 · 600 阅读 · 0 评论 -
Is Bigendian?
bool IsBigendian(){ unsigned short usData = 0x1122; unsigned char *pucData = (unsigned char*)&usData; return (*pucData == 0x22);} 用于指代字节顺序,在网络传输和计算机硬件使用,通常表示逻辑最小处理单元大于物理最小处理单元时逻辑单元与物理单元原创 2012-09-13 11:13:36 · 2261 阅读 · 1 评论 -
查找中位数
查找中位数是面试中经常出现的一类题。用快速排序的思想可以解决这种问题,算法如下:1.抽取数组的第一个元素作为中间值,用快速排序的思想进行一次调整,将比中间值小的放在中间值的左边,比中间值大的放在中间值的右边。2.如果中间值的索引等于数组长度的一半,那么就找到了。3.如果中位数的索引比数组长度的一半大的话,那么在中间值的索引到数组的结尾这个期间内找第(数组长度的一半-中位数)大的数。转载 2012-10-09 22:56:20 · 9169 阅读 · 0 评论 -
程序面试题小汇总
1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration),被转载 2012-09-06 16:09:30 · 1891 阅读 · 0 评论 -
头文件中的预处理宏
//头文件abc.h#ifndef _ABC_H#define _ABC_H//Program Body#endif;它的作用就是防止头文件abc.h中的Program Body部分被程序中的多个文件多次定义,这是C++不允许的,会出现报error:redefinition 错误 #ifndef _ABC_H#define _ABC_H//Program原创 2012-08-25 22:45:56 · 1922 阅读 · 0 评论 -
VS2010 lib和dll导出路径设置
创建库文件工程时往往需要设置.lib文件和.dll文件的路径。假设一个solution对应了多个工程,然而他们共用一些库,就可以在solution文件夹下分别添加两个文件夹lib和bin(其实放在一起也可以,更方便)lib文件:工程属性页-Configuration Properties-General-Output Directory-$(SolutionDir)\l转载 2012-02-02 22:01:37 · 10105 阅读 · 2 评论 -
__stdcall,__cdecl小结
__stdcall,__cdecl,_cdecl,_stdcall,。__fastcall,_fastcall 区别简介1.今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter);不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别__stdcall和__c转载 2012-01-11 16:06:20 · 744 阅读 · 0 评论 -
stringstream
Stream Classes 机制用来读取strings或写入stringsString streams 提供有缓冲区String Streams 的基本操作 str() 将缓冲区内容当作一个string返回 str(string) 将string设为缓冲区内容#include #include #i原创 2011-12-15 21:38:32 · 856 阅读 · 0 评论 -
CMD运行指令
开始→运行→CMD→键入以下命令即可: gpedit.msc-----组策略 sndrec32-------录音机 Nslookup-------IP地址侦测器 e xplorer-------打开资源管理器 logoff---------注销命令 tsshutdn-------60秒倒计时关机命令转载 2011-12-14 10:39:29 · 932 阅读 · 0 评论 -
保存二进制流
std::stringstream geometryStringStream;std::ofstream sddddd("E:\\ddd.bat",std::ios::binary); sddddd.write((char*)geometryStringStream.str().c_str(),geometryStringStream.str().length()); sddddd.c原创 2011-12-21 10:31:15 · 511 阅读 · 0 评论 -
VC实现解压和压缩相关代码
其中#include "zip.h" 以及 #include "unzip.h" 为开源软件中代码,自己可以在网上下载. //*****************************************************************************ZipImplement.h****************************************原创 2011-12-10 18:20:11 · 9798 阅读 · 3 评论 -
GIS之家:OGC
开放地理信息系统协会(Open GIS Consortium,OGC),OGC规范致力于为地理信息系统间的数据和服务互操作提供统一。 OGC——Open Geospatial Consortium——开放地理信息联盟,是一个非盈利的志愿的国际标准化组织,引领着空间地理信息标准及定位基本服务的发展目前在空间数据互操作领域,基于公共接口访问模式的互操作方法是一种基本的操作方法。通过国际标准化原创 2011-12-10 11:23:56 · 1843 阅读 · 0 评论 -
c++流缓冲学习---rdbuf()
我们使用STL编程的时候有时候会想到把一个流对象指向的内容用另一个流对象来输出,比如想把一个文件的内容输出到显示器上,我们可以用简单的两行代码就可以完成。ifstream infile("test.txt");cout 上面的代码就把infile流对象中的流重定向到标准输出cout上,您可以在屏幕上看到test.txt的内容。下面的例子来自MSDN,清晰的描述了rdbuf函数的使用转载 2011-12-10 09:56:53 · 963 阅读 · 1 评论 -
构造函数定义为private,protected
将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法??? 提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子转载 2011-12-08 19:18:51 · 454 阅读 · 0 评论 -
C++中的4种类型转换方式 cast操作
C++的四种cast操作符的区别并非我的原创----------------------------------------------------------------------Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从转载 2011-12-08 19:20:19 · 525 阅读 · 0 评论 -
IStream
BOOL GetStreamLength (IStream* pStream, ULARGE_INTEGER* puiLength){ _ASSERT ((pStream != NULL) && (puiLength != NULL)); BOOL bSuccess = FALSE; LARGE_INTEGER lMov; ULARGE_INTEGER ulEnd,ulBeg转载 2011-12-03 09:40:28 · 2571 阅读 · 0 评论 -
通过std::stringstream的read和write实现对二进制流的读写
一、使用read实现对二进制流的写(将StringStream中的二进制流通过read函数写入pchar指针中) stringstream 中已经有二进制流数据 std::stringstream StringStream("*****"); char* pChar = NULL; int nLengthSize = -1; StringStream.原创 2012-02-09 16:05:15 · 13929 阅读 · 0 评论 -
vs2010中臃肿的ipch和sdf文件
使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量,可惜毕竟硬盘还没有廉价到免费的地步。那么,该怎么解决呢?其实可以关闭它。方法:Tools->Options->Text Editor->C/C++->Advanced->Disable Dat转载 2012-02-09 15:49:29 · 664 阅读 · 0 评论 -
关于virtual与非virtual析构函数的区别
析构函数virtual与非virtual区别: 把析构函数声明为virtual是为了当该类作为基类被继承,并且声明子类对象赋给基类时(多态),父类析构能够从多态的子类开始对父类析构,如果不声明为virtual,只调用父类的析构函数。 作为通常的原则,如果一个类定义了虚函数,那么它的析构函数就应当是virtual的。因为定义了虚函数则隐含着转载 2012-08-25 23:13:01 · 1059 阅读 · 0 评论 -
C++ 希尔排序
typedef int KeyType;typedef int Other_Data;typedef struct{ KeyType key; Other_Data other_data;}RecordType;int ShellInsert(RecordType record[],int nLength,int delta){ int j = 0 ; for原创 2012-09-02 22:44:24 · 652 阅读 · 0 评论