快捷搜索:  
用C语言描述数据结构

用C语言描述数据结构

学好计算机,主要要从三个方面做起,其中,第一步就是要学好各种语言,这是第一步,对各种语言有一个大体的了解;然后就是数据结构了,它是计算机中的一门核心的课程,也是一门信息计算;在最后本人认为就是算法了,它也是这三部中最难得一步了,要学好计算机,做一名优秀的程序元,这三步是最基本的,然后再是在他们的基础上层层深入。 在过去的一年之中,我对计算机的语言有了一个大体的了解,在前一段时间,我自学了数据结构,下面,谈谈我自学的数据结构的看法,在接下来一段有人指点的时间里,再来纠正以前对数据结构的错误看法。 数据结构...

C++基本概念在编译器中的实现

C++基本概念在编译器中的实现

对于C++对象模型,相信很多程序员都耳熟能详。 本文试图通过一个简单的例子演示一些C++基本概念在编译器中的实现,以期达到眼见为实的效果。 1、对象空间和虚函数 1.1 对象空间 在我们为对象分配一块空间时,例如: CChild1 *pChild = new CChild1(); 这块空间里放着什么东西? 在CChild1没有虚函数时,CChild1对象空间里依次放着其基类的非静态成员和其自身的非静态成员。没有任何非静态成员的对象,会有一个字节的占位符。 如果CChild1有虚函数,VC6编译器会在对象...

JAVA与C++::关于JNI中文字符串操作问题总结

JAVA与C++::关于JNI中文字符串操作问题总结

使用Java编程有时候需要使用JNI来实现效率方面或者是其他方面的问题。在JNI使用中不得不面临 的问题就是中文问题(如果你是老外,并且不关心中国建设,那就不用看了;或者你已经知道如何解决 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 的话,你也不用看了),JAVA采用UNICODE来支持运行时,当然类文件的保存格式是UTF-8。 ~~~~~~~~~~~~~~~~~ 当然了你用pure JAVA也不会出现问题的,...

在BCB中使用VCL控件数组

在BCB中使用VCL控件数组

一个游戏菜单,其中动态创建了一组按纽,最后却无法释放。实现方法如下: for (int i=1;i=ButtonCount;i++) { TSpeedButton *spdBTn=new TSpeedButton(this); spdBtn-Parent=ScrollBox;//指定父控件 spdBtn-Caption=IntToStr(i); spdBtn-Width=80; spdBtn-Height=80; spdBtn-OnClick=ButtonClick; spdBtn-Left=intLe...

C++箴言:用非成员非友元函数取代成员函数

C++箴言:用非成员非友元函数取代成员函数

想象一个象征 web 浏览器的类。在大量的函数中,这样一个类也许会提供清空已下载成分的缓存。清空已访问 URLs 的历史,以及从系统移除所有 cookies 的功能: class WebBrowser { public: ... void clearCache(); void clearHistory(); void removeCookies(); ... }; 很多用户希望能一起执行全部这些动作,所以 WebBrowser 可能也会提供一个函数去这样做: class WebBrowser { pub...

C++  对象的初始化

C++ 对象的初始化

构造函数和析构函数 构造函数和析构函数是在类体中说明的两种特殊的成员函数。构造函数的功能是在创建对象时,使用给定的值来将对象初化。析构函数的功能是用来释放一个对象的,在对象删除前,用它来做一些清理工作,它与构造函数的功能正好相反。下面举一例子来说明构造函数和析构函数的特点: class TDate { public: TDate(int y, int m, int d); ~TDate(); int IsLeapYear(); void Print(); private: int year, month...

论C/C++函数间动态内存的传递

论C/C++函数间动态内存的传递

当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道.这些往往会使人受尽折磨.所以如果你想深入C/C++编程,你必须静下心来,好好苦一番。 现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递.并且在软件开发中很多专业人员并不能写出相关的合格的代码。 【引入】 看下面的例子,这是我们在编写库函数或者项目内的共同函数经常希望的。 void MyFunc(char *pReturn, size_t size) { ……… pRet...

C++  类和类的定义

C++ 类和类的定义

在面向对象的程序设计中,有经常接触类、对象等专业名词;到底什么是类、什么是对象呢?在程序又是怎样运用呢?类是面向对象程序设计的核心,它实际是一种新的数据类型,也是实现抽象类型的工具,因为类是通过抽象数据类型的方法来实现的一种数据类型。类是对某一类对象的抽象;而对象是某一种类的实例,因此,类和对象是密切相关的。没有脱离对象的类,也没有不依赖于类的对象。 什么是类 类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。这有点像C语言中的结构,唯一不同的就是结构没有定义所说的“...

C++/CLI思辨录之再谈继承

C++/CLI思辨录之再谈继承

在面向对象编程领域一个关键的概念是继承。 在OO和C++中,类成员共有三种级别的继承:public,protected和private。对于基类成员的存取操作应该依赖于下面两个因素: ·派生类声明其类头(public, protected 或 private)的方式 ·对类成员的存取指定标志(public, protected 或 private) 如果你在基类中声明成员为private,那么这些成员对于任何派生类都是不可存取的。 如果你在基类中声明成员为protected,而且新类是基类的私有派生,那...

用纯粹的C++编写COM组件

用纯粹的C++编写COM组件

本文提供一个完全用C++实现的进程内(DLL)COM服务器,不要ATL或MFC提供任何支持。用这种方式编写COM对象可以让你深入地洞察到COM处理进程内服务器的方法以及COM是如何创建类工厂的。利用本文提供的这个简单框架你可以实现很基本的COM组件,如外壳扩展(Shell Extensions)等。如果你在使用过程中发现了任何问题,请将它反馈到vckbase@public.hk.hi.cn。 以下是用本文所说的方式编写自己的COM对象要经过的步骤: 第一步:写一个头文件,这个头文件包含以下内容: 1、...

学习C++的最大难度

学习C++的最大难度

困难度之一 “C++ 是个难学易用的语言”,这句话相信很多人都心有戚戚。C++的学习难度,一在于语言本身太多的“幕”,另一个就在于 "paradigm shift" (思考模式的移转)。 传统语言如 C, Pascal, Basic, Fortran...,除了模样看起来稍有不同,基本上都是函式 call 来 call 去,大同小异,很容易掌握。你想做的动作,在 code 中都看得一清二楚。你所看不到的,也不过就是编译器为你的函式加上用以处理堆叠的一小段码(prologue 和 epilogue),这一...

C++  对象与数组

C++ 对象与数组

对象数组是指数组元素为对象的数组。该数组中若干个元素必须是同一个类的若干个对象。对象数组的定义、赋值和引用与普通数组一样,只是数组的元素与普通数组不同,它是同类的若干个对象。 1. 对象数组的定义 对象数组定义格式如下: 类名数组名[大小]... 其中,类名指出该数组元素是属于该类的对象,方括号内的大小给出某一维的元素个数。一维对象数组只有一个方括号,二维对象数组要有两个方括号,等等,例如: DATE dates[7]; 表明dates是一维对象数组名,该数组有7个元素,每个元素都是类DATE的对象。...