C/C++
文章平均质量分 62
mal327
这个作者很懒,什么都没留下…
展开
-
判断单链表环问题
问题1、判断链表是否存在环。 设置两个指针fast和slow,初始值都指向头指针,slow每次前进一步,fast每次前进两步。如果存在环,则fast必先进入环,而slow后进入环,两个指针必定相遇(见下面的证明1)。(当然,fast先到达尾部为NULL,则为无环链表)。程序如下:bool isExitsLoop(Node* head) Node *slow = head, *fas转载 2011-09-13 22:51:33 · 1015 阅读 · 0 评论 -
Vector小程序
#include #include #include using namespace std; class Rock { public: Rock(){cout Rock(const Rock & rock){cout Rock & operator=(const Rock & rock){co原创 2011-11-17 19:30:43 · 875 阅读 · 0 评论 -
assert() 用法
assert() 用法本文地址:http://www.diybl.com/course/3_program/c++/cppjs/20071111/85534.htmlassert宏的原型定义在assert.h中,其作用是如果它的条件返回错误,则终止程序执行。 原型定义: #include "assert.h" void assert( int转载 2011-10-26 09:31:31 · 1083 阅读 · 0 评论 -
位结构
位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构 比按位运算符更加方便。 位结构定义的一般形式为: struct位结构名{ 数据类型 变量名: 整型常数; 数据类型 变量名: 整型常数; } 位结构变量; 其中: 数据类型必须是int(unsigned或signed)。 整型常数必须是非负转载 2011-09-23 09:49:05 · 3554 阅读 · 0 评论 -
typedef 和结构体变量的定义方法
typedef 和结构体变量的定义方法本文来自:http://hi.baidu.com/369258147y/blog/item/31a5f1a4d1b03284d043587d.html首先请看程序:#include #include #pragma pack(4) /*struct { int num ; char name[8]; char转载 2011-09-14 10:04:25 · 5471 阅读 · 0 评论 -
C++类变量初始化
C++类变量初始化C++为中类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算C++类中变量的初始化:1.初始化列表:CSomeClass::CSomeClass() : x(0), y(1){},const常量定义必须初始化,且必须使用初始化列表进行初始化;2.类外初始化:int CSom转载 2011-10-21 18:06:56 · 4538 阅读 · 2 评论 -
C与Java中计算程序执行时间的方法
C/C++与Java中计算程序执行时间的方法本文来自:http://justke123.iteye.com/blog/981591C/C++:#include int main(void) { clock_t start, finish; double duration; start = clock();转载 2011-08-23 20:56:18 · 991 阅读 · 0 评论 -
类指针的几个小函数
程序一:class test{public:const static int i=1;//只有静态整型常量才能在类中初始化。void hello() {cout};void main(){test *p=new test();p=NULL;//有没有这一句不影响p->hello();}程序二:class test{private:原创 2011-10-21 18:08:00 · 574 阅读 · 0 评论 -
C++中类的内存分布
如何计算类对象占用的字节数?一个空类的话1个字节。这是为了保证n个连续空类声明时,变量地址有偏移,防止变量覆盖。 非空类的话用关键字sizeof计算。如果手工计算就相当麻烦,光padding就一堆规则了。而且有些额外信息比如虚函数(多个虚函数也只产生一个vptr指针)等等。一个类成员 ,当有虚函数时,有以下成分:各个数据成员,数据对齐产生的间隙,一个虚函数表的 "指针"(无虚不原创 2011-09-17 10:55:11 · 4213 阅读 · 4 评论 -
c++ cout 格式化输出示例
c++ cout 格式化输出示例本文来自:http://hi.baidu.com/czlaner/blog/item/b8544f381f64172db8998fdf.html//在使用setf等库函数时使用//在使用流操纵算子时使用//using namespa转载 2011-10-14 15:53:58 · 7538 阅读 · 0 评论 -
变量初始化
C++语言中变量初始化是一个重要的机制,变量的初始值采用下面的方法决定:1. 变量为内置数据类型内置类型和定义的位置有关,在函数内部定义为初始值为未定义,在函数外部定义初始化为0。2..变量为自定义数据类型自定义数据类型和定义的位置无关,不论在何处都是转载 2011-10-11 11:22:19 · 587 阅读 · 0 评论 -
程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从原创 2011-09-17 11:19:24 · 1015 阅读 · 0 评论 -
main函数及其参数
main称为主函数,是C规范指定的编译器识别的默认程序入口。其余函数均由main函数或其它一般函数调用。main函数可以是无参函数,也可以是有参函数。对于有参的形式来说,就需要向其传递参数。但其它任何函数都不能调用main函数。C/C++语言中的main函数,经常带有原创 2011-10-11 10:39:29 · 1018 阅读 · 0 评论 -
C语言常用宏定义
C语言常用宏定义本文来自:http://www.cnitblog.com/zouzheng/archive/2007/08/31/32691.aspx01: 防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件转载 2011-09-22 10:42:17 · 613 阅读 · 0 评论 -
宏定义中“#”的问题
1. #:在宏展开的时候会将#后面的参数替换成字符串,如: #define p(exp) printf(#exp); 调用p(asdfsadf)的时候会将#exp换成"asdfsadf" 2. ##:将前后两个的单词拼接在一起。例如《The C Progr原创 2011-09-25 09:34:55 · 463 阅读 · 0 评论 -
C和C++中的动态申请内存函数
C和C++中的动态申请内存函数 在C语言中要使用动态内存要包含一个头文件即 #include 或者是#include,然后用C语言的系统函数 void * malloc (usigned size);来获得动态分配的内存,这个函数参数是需要申请的内存的字节数转载 2011-08-31 13:38:12 · 5375 阅读 · 0 评论 -
Linux下C编程和GDB调试
Linux下C编程和GDB调试gcc用法gcc 命令的基本用法如下: gcc [options] [filenames] 命令行选项指定的操作将在命令行上每个给出的文件上执行。GCC 选项 GCC有超过100个的编译选项可用。这些选项中的许多你可能原创 2011-08-31 12:40:05 · 781 阅读 · 1 评论 -
顺时针螺旋法则(clockwisespiral rule)教你认变量类型
[This was posted to comp.lang.c by its author, David Anderson, on 1994-05-06.] [本帖层在1994-05-06被它的作者David Anderson发到comp.lang.c邮件组中] 【译:w转载 2011-08-29 10:42:41 · 2425 阅读 · 0 评论 -
构造函数和复制构造函数
构造函数和复制构造函数 转载自:http://hi.baidu.com/myzjdx/blog/item/db36a6dd58faf4df8d1029b3.html 构造函数、复制构造函数和赋值操作符在生成对象和对象之间的复制时用到。如果类中没有显式定义这三种函数,那编译器通常会为我们定义(合成)。如果类中定义了一个带参数的构造函数,那么编译器就不会再自动合成默认构造函数转载 2011-11-25 15:43:27 · 929 阅读 · 0 评论 -
printf的小例子
关于printf的小例子#include #include #include char *get_a_day(int idx); static const char *msg[]={"sunday","monday","tuesday"}; char *get_a_day(int idx) { static char buf[20]; f原创 2011-11-10 19:11:33 · 2138 阅读 · 0 评论 -
基数排序
基数排序基数排序是另外一种比较有特色的排序方式,它是怎么排序的呢?我们可以按照下面的一组数字做出说明:12、 104、 13、 7、 9 (1)按个位数排序是12、13、104、7、9 (2)再根据十位排序104、7、9、12、13 (3)再根据百位排序7、9、12、13、104 这里注意,如果在某一位的数字相同,那么排序结果要根据上一轮的数组确转载 2012-06-18 21:59:39 · 1774 阅读 · 0 评论 -
左值和右值
左值和右值我们经常可以看到关于 左值(L-value) 和 右值(R-value) 的概念,那么到底什么是左值,什么是右值,它们之间的区别又是在哪里呢?左值(lvalue)和右值(rvalue)最先来源于C语言。最先在C语言中表示位于赋值运算符两侧的两个值,左边的就叫左值,右边的就叫右值。比如:int ii = 5; //ii是左值,5是右值int jj = ii;转载 2012-06-13 20:17:53 · 2695 阅读 · 0 评论 -
揭开私有继承的面纱
揭开私有继承的面纱本文来自:http://blog.csdn.net/tonywearme/article/details/7039963 什么是私有继承?以前在学校学习的时候,冥冥乎知道有这样一个东西,却没有仔细研究过。后来工作中用到Boost库才开始了解它。如果说保护继承大多是为了语言完整性的话,私有继承还是有一些用途的。私有继承 vs转载 2012-06-11 16:33:33 · 651 阅读 · 0 评论 -
字符数组和指针的一个小例子
char s1[] = "aaaaaaaaaaaaaaa"; char *s2 = "bbbbbbbbbbbbbbb"; s1是在运行时刻赋值的;而s2是在编译时就确定的;但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。因为:#define a "aaaaaaaaaaaaaa" #define b "bbbbbbbbbbbbbb" a 和原创 2011-08-26 14:52:48 · 580 阅读 · 0 评论 -
const用法详解
const用法详解本文来自:http://www.yuanma.org/data/2007/0429/article_2549.htm面向对象是C++的重要特性。但是c++在c的基础上新增加的几点优化也是很耀眼的。就const直接可以取代c中的#define。以下几点很重要,学不好后果也也很严重。const1. 限定符声明变量只能被读const int i=转载 2011-08-25 16:03:37 · 464 阅读 · 0 评论 -
inline 关键字
inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏转载 2012-05-06 15:02:52 · 664 阅读 · 0 评论 -
static的用法
static的用法本文来自:http://hi.baidu.com/xin_jing/blog/item/8d4d86823030b5bc6c81199b.html http://topic.csdn.net/t/20060414/11/4686455.html一、 static 变量static变量大致分为三种用法1. 用于局部变量中原创 2011-08-25 17:43:09 · 586 阅读 · 0 评论 -
C++模板类简介
C++模板类简介 模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。 1. 模板的概念。 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义转载 2012-04-13 14:01:23 · 916 阅读 · 0 评论 -
define和typedef的一个小例子
看程序: #define T int * typedef int * Y T a, b; Y c, d; 结果:b 为int, a、c、d 都是int *。分析:int *a,b; 只有a是指针,b不是,而c和d都是Y类型(也就是int*)。 前者是一个宏,编译器仅做复制替换。 后者是一个类型别名,形式上相当于定义了新的类型。 另外#ifndef原创 2011-08-23 16:36:58 · 778 阅读 · 0 评论 -
虚函数如何实现多态
虚函数如何实现多态虚函数联系到多态,多态联系到继承。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。下面来看一段简单的代码转载 2011-08-21 14:50:11 · 6537 阅读 · 0 评论 -
explicit构造函数
explicit构造函数Explicit Constructors(显式构造函数)收藏转载:http://www.cnblogs.com/cutepig/archive/2009/01/14/1375917.html按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String (转载 2012-04-03 22:39:26 · 742 阅读 · 0 评论 -
浮点数在内存中的表示
浮点数在内存中的表示转自《http://blog.csdn.net/juanjuan888/article/details/6672517》C语言:浮点数在内存中的表示单精度浮点数: 1位符号位 8位阶码位 23位尾数双精度浮点数: 1位符号位 11位阶码位 52位尾数实数在内存中以规范化的浮点数存放,包括数符、阶码、尾数。数的精度取决于尾数的位数。比如32位机上flo转载 2012-02-24 13:35:26 · 732 阅读 · 0 评论 -
虚函数和纯虚函数
什么是虚函数 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现共同的方法,但因个体差异而采用不同的策略。虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。 虚函数的作用是实现动态联编,也原创 2011-08-21 10:35:48 · 1046 阅读 · 0 评论 -
break和continue
break和continue是循环中常用的两个关键词。break表示结束循环,无论循环有没有结束都会强制结束;而continue是结束本次循环,继续进行下次循环;两个关键词后面的语句都不会执行。例如:for(int i =0;i{ cout //break; //continue; cout}两个关键词都不使用时输出0 0 1原创 2012-02-27 21:16:44 · 832 阅读 · 0 评论 -
kbhit()函数
函数简介 函数名:kbhit()(VC++6.0下为_kbhit()) 功 能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0 用 法:int kbhit(void); 包含头文件: include 程序示例C语言 #include int main(void) { cprintf("Press any key to转载 2012-02-18 22:51:51 · 11531 阅读 · 2 评论 -
小程序
1. int k=2; k = ( (k==2) ? k--: 5); cout 2. int k = 2; if (k==2) { k = k--; } else { k = 5; } cout分析:原创 2012-02-15 21:42:19 · 524 阅读 · 0 评论 -
EOF在Windows和Unix/Linux下的处理机制
EOF在Windows和Unix/Linux下的处理机制本文地址:http://hi.baidu.com/shichaotansc/blog/item/cf0af7af779665fcfbed50cd.html请问cin>>和cin.get()对EOF的处理机制转载 2011-08-30 14:30:16 · 549 阅读 · 0 评论 -
面试小程序
1.求下面函数的返回值int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x原创 2011-09-26 13:51:18 · 903 阅读 · 0 评论 -
friend 友元函数
friend 友元函数典型的面向对象程序设计规定只有成员函数才能访问类中的私有数据成员,这才能保证数据封装性和信息隐蔽性。但是,在某些情况下我们需要定义在类外部但可以访问私有数据成员的友元函数。友元函数的使用及其访问权遵守下列规则:1.友元函数应在类中通过前置关键字f原创 2011-08-18 17:26:46 · 780 阅读 · 0 评论 -
graphics.h
#includegraphics.h是turboc专有的。用graphics.h必须用turboc。graphics.h是不属于标准的头文件,不具可移植性,VC正好不支持该头文件。实际上,标准C/C++根本就没将图形库纳入标准当中。原创 2011-08-17 09:55:26 · 1058 阅读 · 0 评论