- 博客(41)
- 资源 (1)
- 收藏
- 关注
转载 C++虚函数表解析
<br />C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 <br />关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一
2011-04-16 14:07:00
456
转载 public、private、protected属性与public、private、protected继承
<br />一、先说类成员变量及成员函数的的属性。<br /><br />1.public 与 private 的区别<br />这两个的区别学过C++的都比较清楚,public的变量和函数在类的内部外部都可以访问,而private只有在类的<br />内部可以访问<br />class Base<br />{<br />public:<br /> Base(int a, int b = 0);<br /> int GetA();<br /> int m_b;<br />private:<br /> int
2011-04-16 14:05:00
607
转载 C++中的多态性(vptr和vtable)
<br />多态性 (polymorphism) 是面向对象编程的基本特征之一。而在C++ 中,多态性通过虚函数 (virtual function) 来实现。我们来看一段简单的代码:<br /><br />#include <iostream><br />using namespace std;<br />class Base{<br /> int a;<br />public:<br /> virtual void fun1() {cout<<"Base::fun1()"<<endl;}<br />
2011-04-16 14:04:00
501
转载 C++中public,protected,private访问小结
<br />=================================================<br />已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示: <br />class P : protected O {…}; <br />class Q : public O {…}; <br />关于方法F1的描述中正确的是___(34)___;关于方法F2的描述中正确的是___(35)___;关于方法F3
2011-04-16 14:03:00
1225
转载 C++ 友元(friend)
<br />问题的提出<br /> 我们已知道类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是假如将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,非凡是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。<br /> 为了解决上述问题,提出一种使用友元的方案。友元是一种定义在类外部的普通函数,但它需要在类体内进行说明,为了与该类的成员
2011-04-16 14:02:00
476
转载 c++继承经典例子
<br />c++继承经典例子<br />#include <iostream.h><br />class Base<br />{<br />private:<br /> int b_number;<br />public:<br /> Base( ){}<br /> Base(int i) : b_number (i) { }<br /> int get_number( ) {return b_number;}<br /> void p
2011-04-16 14:00:00
635
转载 C语言指针详述(2):数组与指针
<br />第六章 数组和指针的关系<br /> 1.指针数组:一个数组里存放的都是同一个类型的指针,通常我们把他叫做指针数<br /><br /><br />组。<br /><br /><br />int * a[10];它里边放了10个int * 型变量,由于它是一个数组,已经在栈区分配了1<br /><br /><br />0个(int * )的空<br /><br /><br />间,也就是32位机上是40个byte,每个空间都可以存放一个int型变量的地址,这个<br /><br /><br />
2011-03-20 18:29:00
632
转载 C语言指针详述
<br />第一章 指针的概念<br />指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 <br />先声明几个指针放着做例子: <br /> <br />指针的类型 <br />指针所指向的类型 <br />指针的值 <br />指针本身所占据的内存区 <br />int*ptr; int * int sizeof( in
2011-03-20 18:27:00
418
转载 C语言 指针3
<br />从格式上看倒是与通过指针访问结构成员的不正规方法的格式一样。 <br /> 所有的C/C++编译器在排列数组的单元时,总是把各个数组单元存放在连续的存储区里,单元和单元之间没有空隙。但在存放结构对象的各个成员时,在某种编译环境下,可能会需要字对齐或双字对齐或者是别的什么对齐,需要在相邻两个成员之间加若干个 "填充字节 ",这就导致各个成员之间可能会有若干个字节的空隙。 <br /> 所以,在例十二中,即使*pstr访问到了结构对象ss的第一个成员变量a,也不能保证*(pstr+1)就
2011-03-20 18:24:00
434
转载 C语言 指针4
<br />摘录的别人的: <br /><br />C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的: <br /><br />The right-left rule: Start reading the dec
2011-03-20 18:24:00
554
转载 C语言 指针2
<br />如果上例中,ptr是被减去5,那么处理过程大同小异,只不过ptr的值是被减去5乘sizeof(int),新的ptr指向的地址将比原来的ptr所指向的地址向低地址方向移动了20个字节。 <br /> 总结一下,一个指针ptrold加上一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。ptrnew的值将比ptrold的值增加了n乘sizeof(ptrold所指向的类型)个字节。就是说,ptrnew
2011-03-20 18:23:00
400
转载 C语言 指针1
<br />指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 <br /> 先声明几个指针放着做例子: <br /> 例一: <br /> (1)int*ptr; <br /> (2)char*ptr; <br /> (3)int**ptr; <br /> (4)int(*ptr)[3];
2011-03-20 18:22:00
389
原创 c语言文件操作
13.3 文件的打开与关闭 <br />文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 <br /><br />在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。 <br /><br />13.3.1 文件的打开(fopen函数) <br />fopen函数用来打开一个文件,其调用的一般形式为: <br /><br />文件指针名
2011-03-20 18:19:00
456
原创 C语言读写文件
/****************************************程序功能:读取c:/source.txt文件的内容,取其中'#'开头行的内容写入c:/dest.txt中。如:source.txt文件内容为如下:#jksfjlsd12jlkdjfsl#jfiejw#jkfldsliejfja;fj则程序会产生一个dest.txt文件内容如下:#jksfjlsd#jfiejw#jkfldsl**************************
2011-03-20 18:19:00
493
转载 C语言实现二进制文件读写
<br />我一直觉得二进制文件读写是个很容易的事,所以一直没在意,最近在写一个http客户端,实现文件下载的时候,发现总有问题,后来才发现是忘记写文件用二进制方式,惭愧的很啊。<br />然后,就在网上搜索了一下,发现通过C语言实现二进制文件读写的资料居然出奇的少,这让我很愤怒,因为虽然这东西很简单,但是对于初学者,往往会需要花很长的时间去弄,一旦明白,又发现花的时间很不值得,罢了,这里通过一个文件拷贝的例子来讲讲二进制文件的读写吧。<br />先介绍函数,我们一共要用到三个函数,fopen,fread,
2011-03-20 18:18:00
814
转载 MTK图片资源及主题风格
<br />先说下图片吧,MTK项目中经常修改的有两种图片:<br />1.在image.zip包的,需要改那个就换那个,比较简单,呵呵!<br />2.在Themecomponents.h中的以数据形式存在的(主要包括高亮条还有一些背景),换这个就稍微有点麻烦,下面详细介绍下:<br />2.1在image.zip中的图片在update资源后,会将图片编译成数据存放在文件Custimgdatahw.h中,每个图片对应一个数组,数组名是图片相应的路径,可以在文件CustImgRes.c查找;<br />2.
2011-03-14 16:52:00
2644
转载 gcc 编译器常用的命令行参数一览
<br />gcc 编译器常用的命令行参数一览 (转)<br />这些常用的 gcc/g++ 命令行参数,你都知道么?<br />1. gcc -E source_file.c<br />-E,只执行到预编译。直接输出预编译结果。<br />2. gcc -S source_file.c <br />-S,只执行到源代码到汇编代码的转换,输出汇编代码。<br />3. gcc -c source_file.c<br />-c,只执行到编译,输出目标文件。<br />4. gcc (-E/S/c/) sour
2011-03-10 10:46:00
132
转载 手动编写 Makefile文件
<br />说明:在我的学习过程中看过很多makefile 文件的编写的文章,很多的文章对于初学者来说还有点不是很明白,我看到陈皓的这篇文章写的还是很好的,我把它放在我的blog里,以便能够在访问我的blog的时候看看这篇对初学者和对makefile不十分清楚的人非常有帮助的文章。<br />一. 跟我一起写Makefile[1] <br /> http://blog.youkuaiyun.com/haoel/archive/2004/02/24/2886.aspx<br />二. 跟我一起写Makefile[2
2011-03-10 10:44:00
212
转载 MTK图层原理加案例讲解
<br />在某些频繁更新的界面中,如果某些显示元素一直没有变化,我们就可以将这些元素提取出来画到一个模拟的屏幕中,而将一些需要更新的元素画到另外的模拟屏幕,而后将两个模拟屏幕合并到真正的屏幕上,这样我们就节省了不变元素的重画时间,从而减轻了系统负担及加速画面更新。我们把这样的模拟屏幕就叫层,也可以说层就是屏幕的缓冲空间。<br />例如,如果我们用动画做为背景,将其他的一些元素也画到这一层中,就会出现当动画跳到第二帧后,动画上面的文本及图象都会被盖住。而有了层以后,我们就可以将不变的文本及图象放到新建的一
2011-03-10 10:42:00
571
转载 MTK 层的基础知识笔记
<br />1. gdi_layer_clear()----将整个层刷成单一颜色(层激活后要立即执行)。<br />2. gdi_layer_set_source_key()-----将某一颜色设为层的通透色,在层合并的时候,系统会自动将层与通透色相同的颜色忽略掉(就是说这一点上看到的是底下层的颜色)gdi_layer_set_source_key(TRUE,GDI_COLOR_BLUE);<br />3. gdi_layer_create(20,20,136,130, &my
2011-03-10 10:41:00
666
原创 学习MTK知识的两个好去处
http://blog.youkuaiyun.com/jiangyu912http://blog.youkuaiyun.com/blogercn/
2011-03-09 14:54:00
404
转载 MTK的图片资源的修改与替换
<br />MTK的图片修改比较简单,图片文件一般都放在plutommi/Customer/Images文件夹下,在该文件夹下,图片又分为两类,一类是放在压缩包里,一类是放在该目录下的文件夹里不压缩的文件。比如Default.bmp和EmptyImage.bmp,就直接放在该文件夹下,有一些SP为了修改方便,也会直接放在文件夹里,而不放在压缩包里,以和MTK系统图片相区分。但这两种文件,在使用上完全一样,调用时一般都是通过ID(gdi_image_draw_id)或者图片路径使用(gdi_image_dra
2011-03-09 14:49:00
797
转载 反其道而用之,从数组到资源
<br />前一段时间我曾经写了一篇文章介绍如何编写程序把铃声资源转为数组,其实也可以把转换后的数组再还原成资源以供验证或者做其他用途。几天前有朋友向我索取MID铃声资源,我给了他转化后的资源数组,原本以为他是直接在程序中使用的,但他却似乎不喜欢这种格式,希望我能直接给他铃声,他大概要放到T卡上试听,恰好我也没有原始的音源。后来想了想,其实也是很简单的,只需要一个读写文件的函数,把数组内容写入文件,修改一下扩展名,就变成我们需要的音源了。代码太简单,和朋友们共同学习,希望大伙不要扔砖头。<br />#inc
2011-03-09 14:48:00
422
转载 写一个简单的MTK图片管理工具
<br />前段时间曾经写了一篇介绍MTK的铃声管理的工具,可以把MP3,MID,WAV等声音转化为MTK可以使用的数组以供在编程中使用。后来针对有些朋友需要把数组再转为文件的需求,写了把数组重新写回文件的文章。但MTK的图片管理与铃声管理差异比较大。MTK的图片管理需要把图片信息提取出来以后,经过加工才能使用。MTK把图片数组前八个字节用来描述图片的信息,然后才是图片的内容DATA。所以要生成图片信息,还需要写入数组头。数组头包括图片类型,分为GIF,BMP,PNG,JPB,PBM等,每一种使用一个uns
2011-03-09 14:46:00
641
原创 用EditPlus配置VC环境(VC6)
<br /> 对于C++开发, 我想在Windows下大家用的最多的应该是MS的VC++。但其强大的功能背后却有着“启动速度慢”,“占用资源多”的缺点,尤其是VS2005, 速度不是一般的慢。 当然,这也十分正常,鱼和熊掌向来是很难兼得。 用这个大家伙开发公司的大项目,用起来自然是得心应手;但对于一般的小程序,就有点“杀鸡用牛刀”的感觉了。 然而, 无论在工作还是平时自己学习中,写个小程序, 通常只要一个cpp文件就可以的测试程序还是经常有的事。这样每次打开VS2005就为写一个小小的测试程序,实在是有些“
2011-03-07 13:45:00
3630
原创 MTK工程在ARM环境下编译出现的error
<br />问题: 对于某些C源文件,编译出错,显示Fatal error: Internal fault: 0x55af in XXX,其中行号都是最后一行,怀疑是最后没有加对于空行而导致的,但是加了空行也没解决问题.<br />办法:是arm的编译器的bug,去下载对应的那个848补丁升级即可.升级后的版本应该是<br />ARM C Compiler, ADS1.2 [Build 848]<br />具体解释,参考:<br />C/C++ Compilers<br />Build 848 fixes
2011-01-18 13:57:00
1790
转载 C语言位运算详解
<br />位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作<br />运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。<br />C语言提供的位运算符列表:<br />运算符 含义 描述<br />& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0<br />| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1<br />^ 按位异或 若参加运算的两个二进制位值相同则为
2010-11-27 17:44:00
362
转载 内存对齐与位段
一.内存对齐<br /> 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们就称类型S的对齐要求比T强(严格),而称T比S弱(宽松)。<br /> 这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如这么一种处理器,它每次读写
2010-11-27 17:41:00
557
转载 位段
关键:其存储位置一般从右至左进行存储即:data: c(6bits) | b(2bits) |a(8bits). 依编译器而定,TMS320的DSP的CCS按右至左的顺序。对于位域的定义尚有以下几点说明:0)位段成员的类型必须指定为unsigned int类型;1) 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始;2) 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也
2010-11-27 17:35:00
547
原创 指针函数 函数的指针2
<br />(1) float(**def)[10] def是什么? <br />(2) double*(*gh)[10] gh是什么? <br />(3) double(*f[10])() f是什么? <br />(4) int*((*b)[10]) b是什么? <br /> <br /> <br /> <br />(1) def是一个指针, 指向的对象也是一个指针, 指向的指针最终指向的是10个float构成的数组. <br /> <br />(2) gh是指针, 指向的是10个元素构成的数组, 数组的
2010-11-26 09:54:00
382
原创 指针函数 函数的指针
<br /> 指针函数与函数的指针 指针函数<br />函数不但可以返回数值型数据而且还可以返回指针值,能够返回指针值的函数叫指针函数。<br /><br />指针函数定义格式如下:<br /><br /> <br />类型标识符 *函数名(形参表)<br /> 函数体<br /> <br />(1)定义指针函数时,函数名前必须有*。<br />(2)返回的是一个指针值,而不是一个数值型数据。<br />例该函数是截去参数字符串的尾部空格,并
2010-11-26 09:46:00
535
原创 #include “”和#include 的区别
对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h对于#include “filename.h” ,编译器从用户的工作路径开始搜索filename.h <br />
2010-11-25 14:32:00
404
原创 浮点数与零的比较
<br />在C/C++语言中,Float为单精度,内存中占4个字节,有效数位是7位,(本来是8位的,但要除去一个正负符号位),即有效数字是7位,当超过这个精度时,浮点数就无能为力了。C++ 下的判断方法如下: <br /><br />“float型变量和“零值”比较的方法:<br />const float EPSINON = 0.000001;<br />if ((x >= - EPSINON) && (x <= EPSINON))<br />
2010-11-25 11:55:00
735
转载 关于结构体成员变量的字节对齐的分析
【原创】关于结构体成员变量的字节对齐的分析Author: 李文雄(Horisly) Email: Horisly@126.comQQ: 250125755Date: 2005-5-17#includestdio.h#includestdlib.hstruct A{ char c; int n; long l; double d;};struct B{ char c1; int n; char c2; lo
2010-11-25 10:12:00
696
转载 5分钟搞定内存字节对齐
<br />写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧.<br /> <br />{<br /> 如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?<br /> 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同时就假设了在这种体系结构上对宽度为w的数据的处理最
2010-11-25 10:10:00
537
转载 内存的字节对齐及结构体的sizeof计算
<br />(1)什么是字节对齐<br /> 一个变量占用 n 个字节,则该变量的起始地址必须能够被 n 整除,即: 存放起始地址 % n = 0, 对于结构体而言,这个 n 取其成员中的数据类型占空间的值最大的那个。<br />(2)为什么要字节对齐<br /> 内存空间是按照字节来划分的,从理论上说对内存空间的访问可以从任何地址开始,但是在实际上不同架构的CPU为了提高访问内存的速度,就规定了对于某些类型的数据只能从特定的起始位置开始访问。这样就决定了各种数据类型只能按照相应的规则在内存空间
2010-11-25 10:09:00
926
原创 怎么看自己电脑的是几位的操作系统的
<br />98系统是兼容16和32位的,2000和XP系统都是32位的,<br />不过XP也有64位的,vista有32和64区分,开始运行DXDIAG看下试试。 <br />开始/运行,在运行的对话框里输入CMD后回车,进入的是DOS的窗口,<br />然后在里面输入systeminfo之后回车,接着显示出一串代码啥的,<br />里面有个系统类型.是X86的话就是32位的系统.是X64的话就是64位系统了。
2010-11-25 10:08:00
9261
转载 MTK
MTK--去掉触摸屏校验去掉触摸屏校验先找到SimDetection.c文件中的CallBackPowerOnAnimationComplete函数中的 #ifndef #ifndef __MTK_TARGET__ if (PhnsetNeedFactoryDefaultCalibration() && !AUTO_POWER) #else if (PhnsetNeedFactoryDefaultCalibrat
2010-10-20 10:16:00
813
转载 MTK工程模式祥表
<br />MTK平台及各芯片功能简介<br /> MTK芯片是全球排名前十名的专业IC设计公司——台湾联发科技公司生产。它的主要特点:一是低成本,对于竟争激烈的手机市场是最好的选择;二是芯片具有音乐和视频功能,满足了MP3和MP4的需求;三是芯片集成度高,功能较多技术性能好,迎合了市场的需要。<br />MTK平台发展及各芯片功能介绍!<br />1、MT6205、MT6217、MT6218、MT6219、MT6226、MT6227、MT6228均为基带芯片,所以芯片均采用ARM7的核;<br /
2010-10-20 10:14:00
5954
Inside C++ Object Model
2011-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人