c/c++
文章平均质量分 68
sun shang chao
这个作者很懒,什么都没留下…
展开
-
常量指针和指针常量
一) 常量指针。常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。在C/C++中,常量指针是这样声明的:1)const int *p;2)int const *p;常量指针的使用要注意,指针指向的对象不能通过这个指原创 2014-09-04 20:18:08 · 399 阅读 · 0 评论 -
this指针
this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 this->month = mn; (*this).month = mn; } 1. this只能在成员函数中使用。全局函数,静态函数都转载 2014-09-04 18:19:20 · 431 阅读 · 0 评论 -
输出二叉树中所有从根结点到叶子结点的路径
// 输出二叉树中所有从根结点到叶子结点的路径.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include #include using namespace std;struct BTNode{ char m_value; BTNode *m_left; BTNode *m_right;};//先序创建二叉树void CreatBTr转载 2014-09-18 15:16:16 · 7742 阅读 · 1 评论 -
骰子游戏
在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示:1) 9:无障碍2) 1:停掷一轮,即下轮所掷数字无效;3) 2:后退两步,如果已经到起点不再后退;4) 3:奖励前进一步如果在游戏过程中,已经走到地图终点,则游戏结束。根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步。要求实现函数原创 2014-09-02 20:20:27 · 810 阅读 · 0 评论 -
restrict
restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.如 int *restrict ptr, ptr 指向的内存单元只能被 ptr 访问到,原创 2014-08-25 10:42:04 · 703 阅读 · 0 评论 -
__cdecl
MSDN原话Place the __cdecl modifier before a variable or a function name. Because the C naming and calling conventions are the default, the only time you need to use __cdecl is when you have specifie转载 2014-08-23 17:37:35 · 1192 阅读 · 0 评论 -
由MessageBox透视Win32 API的调用
下面我们来看看Windows平台下应用程序是怎么调用Windows提供的底层API服务运行的。我们编写Win32SDK程序时,需要弹出对话框以作出友好的选择,MessageBox这个API函数就可以实现该功能。在开头要添加,因为其包含了众多的API函数声明头文件。为了探究这个小小的MessageBox是怎么弹出来的,我们右击MessageBox,选择“Go to definition of M转载 2014-08-23 17:00:39 · 2724 阅读 · 0 评论 -
isdigit
isdigit 原型:extern int isdigit(char c); 用法:#include ctype.h> 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零。 附加说明 此为宏定义,非真正函数。原创 2014-08-19 16:30:40 · 632 阅读 · 0 评论 -
引用多态
引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。【例】:class A;class B:public A{……};B b;A &Ref = b; // 用派生类对象初始化基类对象的引用Ref 只能用来访问派生类对象中从基类继承下来的成员,是基类引用指向派生类。如果A类中定义有虚函数,并且在B类中重写了这个虚函数,就可以通过Ref产原创 2014-08-19 16:30:27 · 521 阅读 · 0 评论 -
C++的继承和多态的区别
原文地址:C++的继承和多态的区别作者:狼之行继承:是指子类按照一定方式继承基类的成员及函数。 如果此时定义一个基类的指针,并把子类的对象传给这个基类指针.假如子类和基类都有一个相同函数。那么这个指针调用这个函数则到底调用的是基类的函数还是子类的函数呢?答案是:基类的函数。因为函数的调用取决于基类的指针类型,而不是取决于指针指向的对象类型。 如下: Class shape{转载 2014-08-19 16:29:45 · 689 阅读 · 0 评论 -
realloc
原型:externvoid *realloc(void *mem_address, unsigned intnewsize);语法指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。新的大小一定要大于原来的大小,不然的话会导致数据丢失!头文件#include <<a target="_blank"href="http://baike.baidu.co原创 2014-08-19 16:29:18 · 359 阅读 · 0 评论 -
java关键字
Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。java关键字描述列表abstract //抽象方法,抽象类的修饰符assert //断言条件是否满足boolean //布尔数据类型break //跳出循环或者label代码段byte //8-bit 有符号数据类型case //s原创 2014-08-19 16:28:54 · 319 阅读 · 0 评论 -
静态链接与动态链接的区别
动态链接库、静态库、import库区别动态链接库(DynamicLinked Library):Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于原创 2014-08-19 16:28:45 · 444 阅读 · 0 评论 -
ptrace.h:5: included f…
今天在编译自己的内核时遇到了些问题,想了好些时候,不知道如何解决,下面是报错/usr/src/linux-2.6.32.61/usr/include/asm/ptrace.h:5: included file 'file/linkage.h' is not exportedmake[2]: ***[/usr/src/linux-2.6.32.61/usr/include/asm/.chec原创 2014-08-19 16:28:42 · 854 阅读 · 0 评论 -
C/C++不同文件夹下包含头文件的方…
(2011-06-17 09:29:05)转载▼标签: 杂谈分类: C/CPP本文主要介绍了如何不同文件夹下使用预处理器指示符#include。假设我们有如下一个工程,其中包含了几个源代码文件和头文件。其中main.c是主源代码文件,里面包含main函数。在base中包含:func3.h,func3.c,文件夹main和文件夹func4在ma原创 2014-08-19 16:28:18 · 512 阅读 · 0 评论 -
getch()和getchar()的区别
getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的get原创 2014-08-19 16:28:05 · 345 阅读 · 0 评论 -
友元关系
//友元关系提供了不同类或对象的成员函数之间,类的成员函数与一般函数之间进行数据共享的机制class Point{ public: Point(int xx=0,int yy=0) { X=xx; Y=yy; } int GetX() { return X; } int GetY() { return Y; } friend float fDist(Poi原创 2014-08-25 19:09:59 · 1301 阅读 · 0 评论 -
变量的地址分配
在编译的语义分析阶段会给出每一个变量的一个相对地址,全局变量的是基于静态数据区基址的偏移量,而局部变量是相对于其运行时所对应活动记录基址的相对地址。程序的目标代码和全局变量都是在编译时存入静态数据区的。局部变量是程序运行时动态地分配地址的。这个存储的分配是以栈的形式组织的。当某个函数运行时,为其局部数据建立活动记录,并将其入栈。如果程序设计语言不允许函数的嵌套定义(例如C语言)函数体里肯定原创 2014-08-25 15:57:08 · 1710 阅读 · 0 评论 -
C语言库函数
文件里包含了标准库的一些常用定义,无论我们包含哪个标准头文件,都会被自动包含进来。 这个文件里定义: l 类型size_t (sizeof运算符的结果类型,是某个无符号整型); l 类型ptrdiff_t(两个指针相减运算的结果类型,是某个有符号整型); l 类型wchar_t (宽字符类型,是一个整型,其中足以存放本系统所支持的所有本地环境中的字符集原创 2014-08-19 16:30:53 · 672 阅读 · 0 评论 -
如何修改eclipse编辑器背景色
window-->Preferences-->General-->Editors-->TextEditors--> 看到右边的下方 Appearance color options-->Backgroundcolor-->去掉System Default前面的钩-->点Color: 选择你需要的颜色-->Apply-->OK原创 2014-08-19 16:28:56 · 821 阅读 · 0 评论 -
c语言中库函数中的诸如printf,mall…
答案是肯定的。高级语言,类似于C,是基于WINDOWS API的。我们可以这样看这个机构,高级语言的编译器,像VISUAL STUDIO,在安装时是带有若干LIB的,这些LIB包含高级语言标准中所要求的库函数的实现代码,即二进制代码。在你的程序被连接时,编译器一定会去找那些包含了标准库函数的LIB一起连接成一个可执行程序。而这些LIB的实现毫无疑问是使用了WINDOWS API的。否则你可以想象对原创 2014-08-19 16:28:33 · 607 阅读 · 0 评论 -
类的静态成员
//类的静态成员class Point{ public: Point(int xx=0,int yy=0) //隐式内联构造函数 { X=xx; Y=yy; countP++; } Point(Point &p); //拷贝构造函数 ~Point() //隐式内联析构函数 { counP--; } int GetX() { return X; }原创 2014-08-25 18:35:55 · 436 阅读 · 0 评论 -
WIN32 API写一个窗口
#include #include LRESULT CALLBACK WinSunProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second原创 2014-08-23 17:08:31 · 1080 阅读 · 0 评论 -
引用
引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; 说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进行初始化。原创 2014-08-19 16:30:25 · 428 阅读 · 0 评论 -
C++中函数的重载和覆盖
原文地址:C++中函数的重载和覆盖作者:狼之行函数的重载是指在同一个类中,定义有相同名字的函数.函数的覆盖是指在子类定义一个与父类具有相同名字及参数的函数(不指虚函数).转载 2014-08-19 16:29:42 · 331 阅读 · 0 评论 -
.lib .dll
lib文件编辑.lib是一种文件名后缀,该文件为Windows操作系统中的库文件,相当于Linux中的·a或·o、.so文件目录1意义2使用▪ 静态编译▪ 动态编译3详细说明▪ 内容▪ 使用步骤4与dll区别5加载方法▪ 直接加入▪ 设置▪ 程序代码6节的概念原创 2014-08-19 16:29:16 · 408 阅读 · 0 评论 -
java api
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。运行Java程序时,虚拟机装载程序的class文件所使用的JavaAPI class文件。所有被装载的class文件(包括从应用程序中和从JavaAPI中提取的)和原创 2014-08-19 16:29:05 · 487 阅读 · 0 评论 -
JAVA是解释型语言还是编译型语言
JAVA是解释型语言还是编译型语言概念:编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束! 区别:编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。如C、C++、Delphi、Pascal,Fortran。解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。如Jav原创 2014-08-19 16:29:03 · 1789 阅读 · 0 评论 -
Java 对象实例化过程以及子类…
对象实例化过程以及子类的构造过程" TITLE="Java 对象实例化过程以及子类的构造过程" />对象实例化过程以及子类的构造过程" TITLE="Java 对象实例化过程以及子类的构造过程" />原创 2014-08-19 16:28:58 · 445 阅读 · 0 评论 -
KEIL程序时 can't …
有时候我们打开别人的KEIL程序时,会经常碰到can't execute'c:\keil\c51\bin\c51.exe'的错误,昨天到网上搜了一下,出现这样的错误人还不好,但没有找到解决方法。笔者经过摸索,找到了解决对策:出错原因;被打开的KEIL程序的编译器安装在C盘,即c:\keil的路径下。而使用者的KEIL装在不同路径。针对这样的原因,就有两种解决方法:1、自己重建工程,把原创 2014-08-19 16:28:24 · 971 阅读 · 0 评论 -
浅谈C/C++中的static和extern关键…
.C语言中的static关键字在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对原创 2014-08-19 16:28:09 · 343 阅读 · 0 评论 -
strlen
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。原创 2014-08-25 10:17:52 · 377 阅读 · 0 评论 -
指向类的静态和非静态成员的指针
#include class Point{public: Point(int xx=0,int yy=0) { X=xx; Y=yy; } Point(Point &p); int GetX(){ return X; } int GetY(){ return Y; } static int countP;private: int X,Y;};Po原创 2014-08-26 19:07:44 · 1888 阅读 · 1 评论 -
双目运算符重载
#include class complex{public: complex(double r=0.0,double i=0.0){ real=r; imag=i; } complex operator +(complex c2); //运算符+重载为成员函数 complex operator -(complex c2); //运算符-重载为成员函数 void disp原创 2014-08-26 20:51:30 · 2493 阅读 · 0 评论 -
单目运算符重载
#include class Clock{public: Clock(int NewH=0,int NewM=0,int NewS=0); void ShowTime(); Clock& operator ++(); //前置单目运算符 Clock operator ++(int);//后置单目运算符重载 int的作用就是区分前置和后置private: int Hour,Min原创 2014-08-27 10:53:09 · 1102 阅读 · 0 评论 -
拷贝构造函数
#include class Point{public: Point(int xx=0,int yy=0) { X=xx; Y=yy; } Point(Point &p); int GetX(){ return X; } int GetY(){ return Y; }private: int X,Y;};Point::Point(Point &p原创 2014-08-26 19:35:24 · 477 阅读 · 0 评论 -
虚析构函数
#include class Base{public: virtual ~Base(){ //如果不声明为虚析构函数,则只能析构基类,派生类不能析构,造成内存泄露 cout<<"Base destructor\n"; }};class Derived:public Base{public: Derived(); ~Derived();private: int *i_p原创 2014-08-27 15:29:39 · 362 阅读 · 0 评论 -
断言(ASSERT)的用法
我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由原创 2014-09-10 21:21:26 · 526 阅读 · 0 评论 -
空指针
void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容的操作.必须先转成别的类型的指针才可以把内容解释出来.还有'\0',这也不是空指针所指的内容. '\0'是表示一个字符串的结尾而已,并不是NULL的意思.真正的空指针是说,这个指针没有指向一块有意义的内存,比如说:char* k;这里这个k就叫空指针.我原创 2014-08-27 21:01:47 · 480 阅读 · 0 评论 -
c++中的函数嵌套调用和嵌套定义问题
c++中允许函数的嵌套调用,但不允许函数的嵌套定义,例如:#includeint SwpInt(int *a,int *b){ int c; c=*a; *a=*b; *b=c; return a;}void main(){ int e=12; int f=89; SwpInt(&e,&f); cout}这样定义是对的,但是如原创 2014-09-10 21:14:09 · 8426 阅读 · 0 评论