C/C++
文章平均质量分 67
草原面朝大海
技术的力量
展开
-
C++ GetTickCount()和Sleep()
本文转自 http://blog.csdn.net/mjshldcsd/article/details/7180962C++ GetTickCount()和Sleep()GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。GetTickCount函数的原型为DWORD GetTic转载 2013-09-11 23:42:49 · 1034 阅读 · 0 评论 -
递归与非递归
本人摘取了以下几篇比较有代表性的文章,从简入深,大家可以看一下:1.http://blog.csdn.net/Shunrei/article/details/5680579 这篇入门级2.http://www.360doc.com/content/12/0331/23/6075898_199798198.shtml 这篇下面的几个例子可以看一下3.http://www.ch转载 2013-04-24 15:00:04 · 715 阅读 · 0 评论 -
浅析c++ public protected private的访问控制
个人体会:继承并不是基类的东西全是你的,当出现多次间接继承的时候,这个问题就凸显出来了c++中private,public,protected的访问控制第一:private,public,protected方法的访问范围.(public继承下)private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.protected: 可以被该类中的转载 2013-04-30 13:30:32 · 807 阅读 · 0 评论 -
rand 和 srand 详解
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND转载 2013-05-11 15:22:00 · 1251 阅读 · 0 评论 -
assert()函数用法总结
assert()函数用法总结 assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abor转载 2013-05-12 22:12:54 · 763 阅读 · 0 评论 -
微软等面试100题答案精选
本文转自csdn大神 http://blog.csdn.net/v_JULY_v/article/details/6126444微软等面试100题答案V0.3版第21-40题部分答案精选 作者:July 、何海涛等网友-------------------------------------开诚布公,接受读者质检本文,是根据我之前上传的,微软等面试100转载 2013-05-17 23:32:47 · 960 阅读 · 0 评论 -
详解大端 小端 (函数判断及转换)
本文转自 http://blog.csdn.net/ce123/article/details/6971544一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋转载 2013-05-18 12:59:54 · 4765 阅读 · 0 评论 -
C 中 计算程序运行时间
C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock( void );这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据转载 2013-05-28 10:18:40 · 752 阅读 · 0 评论 -
strcpy strncpy memset memcpy 关系
一 函数strcpy extern char *strcpy(char *dest,char *src); #include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针 strncpy转载 2013-05-17 16:03:46 · 859 阅读 · 0 评论 -
c++ const引用和非const引用
const引用可读不可改,与绑定对象是否为const无关,注意区分const引用与对const对象的引用非const引用可读可改,只可与非const对象绑定const int ival = 1024;const int &refVal = ival; // ok: both reference and object are constint &ref2 = ival;转载 2013-04-18 00:47:37 · 1928 阅读 · 0 评论 -
PriorDate函数实现
PriorDate函数实现 #includevoid main(){ int lastday,lastmonth,lastyear; int day,month,year; bool c1,c2,c3; cout cin>>month>>day>>year; if (year%4==0&&ye原创 2013-03-29 21:02:59 · 2685 阅读 · 0 评论 -
浅析inserter和front_inserter区别
在c++primer第四版,中文版P348页中,大家应该都会对inserter和front_inserter这两个函数的用法有点疑问吧,经过我的一番查证,测试和思考,总结出一点自己的想法,如有不当之处,请大家多多包涵。原文中说道“在使用front_inserter时,元素始终在容器的第一个元素插入。而使用inserter时,元素则在指定位置插入。即使此指定位置初始化为容器中的地一个元素原创 2013-04-27 14:00:12 · 3047 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)参考一
http://www.cnblogs.com/BlueTzar/articles/1223313.html对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using names转载 2013-04-29 10:16:34 · 608 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)参考二
http://blog.csdn.net/bluescorpio/article/details/4322682 C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:[cpp] view plaincopy转载 2013-04-29 10:17:52 · 751 阅读 · 0 评论 -
Info系统 中 数据结构的一点总结
1 配置数据时,sex采用了枚举类型进行定义typedef enum tagINFO_SEX{ INFO_SEX_FEMALE = 1, INFO_SEX_MALE = 2}INFO_SEX_E;typedef struct tagINFO_CFG{ unsigned int uiId; unsigned int uiAge; INF原创 2013-08-25 14:08:39 · 1241 阅读 · 0 评论 -
C语言常见错误(二)
以下是我的学习笔记变量错误一、全局变量1、定义初始化为0,无初始化,存在与bss段中,在APP中不存在,运行时在展开。(这是由于全局变量,系统也会自动初始话为0)2、定义初始化非零,存在data段中,因为需要保存初始值,存于APP中基于此,注意以下亮点(1)对全局变量的定义初始化时会使APP增大,尤其对大数组,应尽量避免在定义时对它们进行初始化,我们来看下面的一个例子#原创 2013-08-01 23:07:27 · 796 阅读 · 0 评论 -
C语言常见错误(一)
此篇为个人学习笔记:一、运算符号和优先的错误1 = 和 == ,在判断语句中要时时注意2 “++” “--”运算符 注意 a 在表达式中不要再引用,其运算顺序是依赖编译器的。 b 必须为左值 我们来看一下这个程序#include int main(){ int a[10]; int i=0; a[i]=i++; //(i+1原创 2013-07-31 23:13:30 · 948 阅读 · 0 评论 -
c++ main() 标准定义式
根据c++ 标准规格,只有两种main() 是可以移植的: int main() { } int main(int argc,char* argv[]){} 在这里argv(命令行参数数组)也可定义为char** 在c++ 中,main()的末尾定义了一个隐式的 return 0; 摘自 c++标准程序库 p21原创 2013-06-08 17:37:02 · 983 阅读 · 0 评论 -
c++ 指针取值
首先切记,指针一定要初始化,这是一个很必要的习惯!!!c++ 指针取值,一般为以下三种情景:1. 保存一个特定的对象地址2. 用另一个指针对其进行赋值3. 用0值,注意别的值是不行的接下来我们来看下面的一个例子:#includeusing namespace std;int main(){ int ival = 1;原创 2013-04-19 20:05:19 · 8416 阅读 · 0 评论 -
指针下标
int *p = & ia[2];int j = p[1]; //这边p[1]相当于是 *(p+1) 但是我们 指针 p 并不会改变原先的值,这也是和 p++ 所不同的地方接下来,我们来分析一个例子,大家会更加明白一点#includeusing namespace std;struct S{ int i; int *原创 2013-04-19 16:03:57 · 2183 阅读 · 0 评论 -
sizeof 研究(转载)
注意环境是vc6 不同环境不同!!!1. 定义: sizeof是何方神圣?sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为: The sizeof keyword gives the amount of storage, in bytes, associated with a转载 2013-04-18 16:41:12 · 523 阅读 · 0 评论 -
C++ const引用详解(加上自己的一点心得)
原文转自http://blog.csdn.net/k2eats/article/details/2541790自我看了之后的一点体会:1. const int 和 int const 是一样的 但是 int const 会更容易理解些(见文章的最后)2. const int *p = &a 表示指针是const 指向的值不能变,指针是可以发生变化的 i转载 2013-04-18 00:29:11 · 1092 阅读 · 0 评论 -
C++中智能指针的设计和使用
http://blog.csdn.net/hackbuteer1/article/details/7561235智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该转载 2013-04-29 15:17:46 · 721 阅读 · 0 评论 -
浅析std::remove函数
c++标准库中有一个名为 std::remove函数,形式为remove(beg,end,val)remove_if(beg,end,unarryPred)其中,beg,end为迭代器,也可以为指针机理为:通过用保存的元素覆盖元素而从序列中“移去”元素。remove移去的元素为等于val值,remove_if移去的是当unarryPred为真的那些元素,然后返回一个迭代器,该迭代器原创 2013-04-29 10:39:30 · 17143 阅读 · 0 评论 -
exit(0)与exit(1)、return区别
http://blog.163.com/fengjiale123@126/blog/static/1298902402010731114834911/写得很清楚,大家可以参考下exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序,且如若前面有对文件fopen操作,可以不写close 操作,因为exit 操作会自动调用close 文件的;retu转载 2013-04-04 23:17:38 · 794 阅读 · 0 评论 -
malloc分配二维数组
转自http://blog.csdn.net/dualeak/article/details/4677132讲的很好!假设我需要一个nrows、 ncolumns数组,则可以用以下几种方法动态分配空间:1. 动态数组的成员都可以用正常的数组下标 Array[i][j] [cpp] view plaincopy#include #inclu转载 2013-04-07 16:14:36 · 828 阅读 · 0 评论 -
关于define中后面括号的问题
我们会发现有一些这样的现象,有的有括号,有的没有括号#define MAX (1024*1024)#define MAX 1024*1024一个有括号,另外一个没有括号主要由两个原因可以解释:1.防止歧义。这里的括号主要是起到了边界的作用。2.编码风格统一我们来看一下下面的程序#include#include#define A (2+3)#d原创 2013-04-09 00:08:23 · 4140 阅读 · 2 评论 -
likely unlikely()详解
先理清一个概念:从作用上看 if(like(v)) == if(unlikely(v))==if(v) 那么我们为什么要用likely unlikely 命令呢,我们来看下面的详解本文转自:http://www.cnblogs.com/PyshCliem/archive/2012/09/07/2674714.html在include/linux/compiler.转载 2013-06-05 21:28:36 · 987 阅读 · 0 评论 -
模板编译模型
本文转自:http://blog.csdn.net/lh844386434/article/details/6713361此文一些地方写得还不大清楚咯,但可以帮助理解哈写过模板的朋友也许知道,一个模板程序,当编译器看到模板定义时并不立即产生代码,只有在我们用到模板,并对其实例化的时候,才会产生特定的实例。此时,编译器就要访问定义模板的源代码了。如果源代码不可访问,当然,编译器会转载 2013-06-05 16:04:00 · 851 阅读 · 0 评论 -
参数传递二维数组
本文转自: http://blog.csdn.net/yunyun1886358/article/details/5659851今天在论坛上有朋友提问:声明函数如下void function(int** pInt),意图是想参数传递一个二维数组。于是就定义了一个二维数组,比如 int[1][1],然后调用函数。结果如何?当然是失败了,编译器提示:cannot convert p转载 2013-06-13 23:36:13 · 741 阅读 · 0 评论 -
非类型形参的模板实参
模板形参不必都是类型。在调用函数时非类型形参将用值代替,值的类型在模板列表中指定。例如,下面的函数模板声明了array_init是一个含有一个类型模板形参和一个非类型模板形参的函数模板。函数本身接受一个形参,该形参是数组的引用。模板非类型形参是模板定义内部的常量值,在需要常量表达式的时候,可使用非类型形参,例如上述代码来指定数组的长度。当调用array_init时,编译器从数组实参计算非类型形转载 2013-06-05 09:45:58 · 1018 阅读 · 0 评论 -
new 二维数组的动态分配和删除
本文转自:http://blog.csdn.net/jia_xiaoxin/article/details/3268645二维数组的动态分配和删除 首先,动态支持数组的分配,必须用 new 来进行创建一段堆内存,其它的存贮区域不允许动态分配的产生。 其次,C++并没有提供真正的动态多维数组语法,想动态分配数组,必须通过一维动态数组组合形成一个类似多维数组的转载 2013-06-13 14:14:05 · 1001 阅读 · 0 评论 -
ifdef ifndef的区别
本文转自:http://blog.sina.com.cn/s/blog_4b9216f50100bty6.htmlifdef与ifndef的区别:ifdef:如果标识符被定义,则执行程序段1,否则执行其他程序段ifndef:与ifdef相反,如果标识符未被定义,则执行程序段1,否则执行其他程序段2#ifndef#define#endif的用法条件编译转载 2013-06-10 13:55:00 · 8115 阅读 · 1 评论 -
volatile 详解
今天看stl,真不好意思,第一次看到volatile关键字,搜索下了,发现还是挺有用的,接下来是两篇博文,基本上可以涵盖volatile 的用法其中第一篇侧重于嵌入式上volatile的用法,第二篇侧重在c上volatile,两篇互补.注:c++中可以使用 const_cast 去除 volatile 的作用第一篇转自:http://www.cnblogs.com/yc_su转载 2013-06-08 17:30:44 · 864 阅读 · 0 评论 -
c 风格字符串总结
开始转载之前,我先补充两点a str strn 类函数 是c语言风格的操作,所以在里面用到的必须位字符串面值b “+”这个操作符号,左右两边必须一个要为string,否则将报错。这是因为 + 操作符在重写的时候,要求的是string类型,如果两个都是字符串常量则无法转换为string类型了 eg string s1 = "hello";转载 2013-05-12 21:26:14 · 1226 阅读 · 0 评论 -
关于strncpy 的一个小小发现
想必大家对strncpy这个函数都不陌生,原型:char * strncpy(char *dest, char *src,size_t,num);是将src 的n个字符粘帖到dest中,返回dest的首地址。strncpy是处理的c语言风格的字符串。今天做实验的时候,发现了一个很有趣的现象:#include#include#includeusing namespace s原创 2013-05-22 18:02:08 · 1537 阅读 · 0 评论 -
numeric_limits 解析
初次碰到numeric_limits不知道这个可以用来干嘛,可以这么说,这个是用来为移植的方便性设计的。c++移植的时候有这么一条经验,为了达到最大程度的可移植性,一种明智的做法是让我们所依赖的由实现定义的特征明确化,将更微妙的实例孤立到程序里一些清楚标明的部分之中。一种典型的实际做法就是将所有对硬件的依赖表述为一种常量和类型定义,放到某个头文件里。正是为了支持这类技术,标准库提供原创 2013-05-21 20:39:05 · 1279 阅读 · 0 评论 -
浅析复制控制
c++中有中说法叫做复制控制,包含以下三种:1 复制构造函数2 赋值操作赴3 析构函数 详细部分大家可以参见:c++ primer 第四版第13章。在这里我想强调两点:1.复制构造函数和赋值操作符的区别:复制构造函数是在对象初始化时进行的,与之相对应的是直接初始化(用构造函数实现),而赋值操作符的顺序是先要删除原对象的内容,然后将右操作数赋值给左操作数。2.析构时的析构原创 2013-06-15 11:36:00 · 727 阅读 · 0 评论 -
perror函数,strerror函数,errno,stderr
http://blog.linuxeden.com/index.php/39761/viewspace-7440.html在讲之前,我们先来看看下面的语句:fprintf(stderr,"can't open this fill %s;",&str);想必上面的我们经常会用到吧,那我们是否有别的函数来进行实现呢,接下来我们来看下面几个函数#include // v转载 2013-04-13 23:29:43 · 1807 阅读 · 0 评论 -
c中 无穷大数
看算法书很多时候都会表示无穷大的概念,可是c中却没有现成的表示无穷大数所以我们可以这样来定义#includeusing namespace std;const unsigned int MAX =0xFFFFFFFF;int main(){ cout<<MAX<<endl; return 0;}这样定义的MAX 一般都能满足需求了,但要注意,这样申明的原创 2013-05-28 20:24:27 · 4185 阅读 · 0 评论