c++
Justmeh
这个作者很懒,什么都没留下…
展开
-
也谈typedef[转]
C语言语法简单,但内涵却博大精深;如果在学习时只是止步于表面,那么往往后期会遇到很多困难。typedef是C语言中一个很好用的工具,大量存在于已有代码中,特别值得一提的是:C++标准库实现中更是对typedef有着大量的使用。但很多初学者对其的理解仅局限于:typedef用来定义一个已有类型的"别名(alias)"。正是因为有了这样的理解,才有了后来初学者在typedef int转载 2009-02-25 11:20:00 · 938 阅读 · 0 评论 -
sizeof 数组与指针
注:本文摘自csdn论坛的一个回帖,个人觉得看完之后豁然开朗,于是转贴于此。 地址为:http://topic.csdn.net/u/20081016/23/6b46dc63-b0d7-4dad-806f-e8cd48a2208b.html 千万不要把数组名看成指针,尽管有些时候他们是相通的,但也仅限某些时候而已。 sizeof是一个奇特的函数,告诉你转载 2009-11-25 16:23:00 · 1652 阅读 · 1 评论 -
函数模板注意的一个地方
在定义函数模板时,采用语句:template或template,其中T是模板类型。并且这个语句要同时出现在函数声明和定义的前面。需要注意的是,在vc中,当你定义函数模板时,一定要在调用该函数的文件前面包含上定义文件。否则会出错。原创 2010-01-24 23:41:00 · 1025 阅读 · 0 评论 -
动态二维数组的定义
首先,一维数组的动态定义很简单: int *arr = new int[row]; 于是,大家很可能想当然的认为二维数组的动态定义应该是: int **arr = new int[row][col]; 但是,这是一种错误的方法,二维动态数组的定义应该分成两个步骤: 1.首先,动态定义一个指向一维数组的指针数组,将其指针保存在arr中。 int **a原创 2010-01-25 11:02:00 · 2822 阅读 · 0 评论 -
static_cast、dynamic_cast、reinterpret_cast、和const_cast[转]
原贴地址:http://www.azure.com.cn/article.asp?id=298 关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_转载 2010-02-27 10:54:00 · 572 阅读 · 0 评论 -
`QtValidLicenseForCoreModule' does not name a type 错误的解决
目前正在学习Qt,按照C++GUI programming with QT4的例子,自己输入了一遍程序。在编译的时候,免不了许多错误,但是有一个错误却花了我好长时间才解决,这就是:`QtValidLicenseForCoreModule does not name a type;在网上一直找不到解决的方法,许多人都说是配置文件的问题,可是自己刚学Qt,对配置文件一窍不通。原创 2009-12-23 10:28:00 · 4196 阅读 · 0 评论 -
复制构造函数与赋值构造函数
拷贝构造函数首先是一个构造函数,它调用的时候产生一个对象,是通过参数传进来的那个对象来初始化,产生的对象。 operator=();是把一个对象赋值给一个原有的对象,所以如果原来的对象中有内存分配要先把内存释放掉,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操作。还要注意的是拷贝构造函数是构造函数,不返回值;而赋值函数需要返回一个对象自身的引用,以便赋值之原创 2010-04-09 09:58:00 · 614 阅读 · 0 评论 -
构造函数,复制构造函数与拷贝赋值操作符
当定义或初始化一个类对象时,究竟会调用哪个呢?1.当定义一个新的类对象时,会调用类的构造函数。2.当初始化一个新的类对象时,会调用类的复制构造函数。3.当给一个已存在的类对象赋值时,调用的是拷贝赋值操作符。为了说明这一点,我们来看看下面的例子://头文件#ifndef CONSTRUCTOR_H_#define CONSTRUCTOR_H_#include using namespace st原创 2010-05-24 22:02:00 · 775 阅读 · 0 评论 -
c++文件读写
<br />要写一些简单的日志到文本文件中,参考了以下两篇文章:<br />ifstream 和 ofstream( 引用)<br />C++标准库 之 iostream库的学习笔记(二)fstream库以及ofstream类的使用<br /><br /><br />ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; <br />在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运转载 2010-06-23 17:33:00 · 932 阅读 · 0 评论 -
extern "c"用法
<br />extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字创意产品网 . 它告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。 1。对于extern变量来说,仅仅是一个变量的声明,其并不是在定义分配内存空间。如果该变量定义多次,会有连接错误 2。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。也就是说c文件里面定义,如果该函数或者变量与开放给外面,则在h文件中用extern加以声明。所以外部文件只用include该h文件就可以了转载 2010-10-18 15:59:00 · 902 阅读 · 1 评论 -
c++获得本机ip地址
采用c语言获得本机的ip地址代码如下: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 int main() 8 { 9 addrinfo *addr_info = NULL; 10 char hostName[100]; 11 char ip[3原创 2012-02-09 13:51:31 · 1314 阅读 · 0 评论 -
[转]sscanf() - 从一个字符串中读进与指定格式相符的数据
sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以转载 2009-11-09 15:23:00 · 680 阅读 · 0 评论 -
归并排序法(MergeSort)c++实现
假设有两个人,每人手里都有一部分牌,而且每个人手中的牌都按大小顺序排列好了。那么,现在要把两个人手中的牌合并到一起,并且合并后要从小到大依次排好,可以这样做:每个人都从手中拿出最小的牌,然后比较,谁的牌小就把该张牌放在桌面上,牌大的一方牌仍然拿在手中,待下次再比较。下一次每个人又拿最小的牌进行比较,如此下去。。。直到一方手中的牌全部放在了桌面上,这时另一方就可以把牌按从小到大的顺序全部原创 2009-10-28 17:19:00 · 3219 阅读 · 0 评论 -
插入排序法(InsertSort)c++实现
插入排序法就是把无序区的数据一个一个在有序区里找到自己的位置。这就好比军训时,教官首先让最左边的人站着不动,然后从左边第二个人开始,如果他比第一个人高就不动,否则就排在第一个人的左边。接着看第三个人,把他与前两个人比,然后找到自己的位置,依次下去,直到最后一个人找到自己的位置。c++实现:InsetSort.h文件:/********************************原创 2009-10-27 16:30:00 · 2952 阅读 · 1 评论 -
如何在Linux使用Eclipse + CDT开发C/C++程序? (OS) (Linux) (C/C++) (gcc) (g++) [转]
A. 为什么要在Linux使用Eclipse开发C/C++程序? Linux是一个以C/C++开发为主的平台,无论是Kernel或是Application,主要都使用C/C++开发。传统在Linux下开发程序,是在文字模式下,利用vi等文字编辑器撰写C/C++程序存盘后,在Command line下使用gcc编译,若要debug,则使用gdb。这种开发方式生产力并不高,若只是开发学习用转载 2009-02-25 12:53:00 · 1419 阅读 · 0 评论 -
Vim编辑器
Vim 是一个高级文本编辑器,她提供了Unix下编辑器 Vi 的功能并对其进行了完善。Vim 经常被认为是"程序员的编辑器",她在程序编写时非常有用,很多人认为她是一个完整的集成开发环境(IDE)。仅管如此,Vim并不只是程序员使用的。Vim可以用于多种文档编辑,从email排版到配置文件编写。本篇文章将告诉您如何安装vim,并对其进行简单介绍。目录转载 2009-02-22 22:16:00 · 876 阅读 · 0 评论 -
Linux下如何安装软件
在Windows下安装软件时,只需用鼠标双击软件的安装程序,或者用Zip等解压缩软件解压缩即可安装。在Linux下安装软件对初学者来说,难度高于Windows下软件安装。下面我就详细讲解Linux下如何安装软件。 先来看看Linux软件扩展名。软件后缀为.rpm最初是Red HatLinux提供的一种包封装格式,现在许多Linux发行版本都使用;后缀为.deb是DebainLinu转载 2009-02-25 10:31:00 · 773 阅读 · 0 评论 -
使用VIM开发软件项目3:vimrc初步
本节所用命令的帮助入口: :help compatible:help mapleader:help map:help autocmd为什么我的VIM这么难用?不能语法高亮,没有折行,不能打开多个窗口多个buffer,不能……为什么别人用几个键就可以完成一个很复杂的功能,而我不能?为什么别人的VIM看起来和我的很不一样?……当你开始问这些问题的时候,是时候去检查一下你的vim转载 2009-02-25 09:58:00 · 3068 阅读 · 0 评论 -
realloc,malloc与calloc的用法[转]
三个函数的申明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t numElements, size_t sizeOfElement); 都在stdlib.h函数库内它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL转载 2009-08-19 17:05:00 · 1686 阅读 · 1 评论 -
seekg()与tellg()用法详解
对输入流操作:seekg()与tellg()对输出流操作:seekp()与tellp()下面以输入流函数为例介绍用法:seekg()是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。对于第一个参数,可以是正负数值,正的表示向后偏移,负的表示向前偏移。而第二个参数可以是:ios::beg:表示输入流的开始位置ios::cur:表示输入流的当前位置io原创 2009-09-02 17:05:00 · 11626 阅读 · 0 评论 -
c++中的static用法初解
大家对于static声明,都知道它声明一个静态的变量,但是却不知道它其实有两层涵义:1.首先,static声明一个静态的变量,它声明的变量只需要一次初始化,以后会一直保留这个值。2.其次,用static声明的变量是一个局部变量,它只在定义它的模块中可见,对于这一点很多人都不明白。举例:void autoadd(){ static int i=0; cout原创 2009-09-15 17:27:00 · 872 阅读 · 0 评论 -
vc一编译就死机
今天遇到了一个烦人的问题:在vc环境下,修改程序代码后点击编译图标,程序立马就死机了,只能通过任务管理器才能关掉界面。我开始还以为是自己的程序有问题,但是重新启动vc后又能编译了,而修改一个程序变量后再编译就又死了。这种情况出现了好几次,即只要你修改了程序代码,重新编译就死,根本不给你任何侥幸的心理。郁闷之极,我上网查了查,原来是vc本身的问题,需要下一个vs6sp6的软件。在原创 2009-10-12 17:05:00 · 1873 阅读 · 2 评论 -
交换两个变量的值不使用第三个变量
在一些嵌入式开发中,有可能内存空间不够,或者寄存器有限,而变量又很多,这时就需要尽可能的减少新变量的定义。交换两个变量的值的时候,常常不使用第三个变量,这样可能节约一个寄存器的使用。具体方法有两种方法一:a=1;b=2;a=a+b;b=a-b;a=a-b;方法二:a=1;b=2;a=a^b;b=a^b;a=a^b;原创 2009-10-20 15:53:00 · 1102 阅读 · 0 评论 -
快速排序法(QuickSort)c++实现
还是以军训中的队形排列为例:第一步:教官面对一列无序的队伍,他指着最右边的一个人A说:“比他高的站他右边,比他矮的站他左边。”完成之后,队伍被他分割成了两列,第一列:比A矮的在A的左边;第二列:比A 高的在A 的右边。第二步:他首先处理第一列,指着在A的左边的一个人B(也就是第一列中的最右边的一个人)说到:“比B高的站他右边,比B矮的站他左边”。这样完成之后,第一列又他原创 2009-10-27 17:50:00 · 4909 阅读 · 0 评论 -
std vector与std list的效率比较
一直想知道std中vector和list的效率哪个高些。于是做了一个简单的测试,对std vector和list的push_back与遍历操作的效率进行比较。结果如下:1. push_back操作:连续push_back操作100000个元素,然后clear()。一直重复10000次。vector耗时13s, list耗时118s2. 遍历操作:采用迭代器对原创 2013-01-22 14:41:27 · 6399 阅读 · 3 评论