博客首页
注册
建议与交流
排行榜
加入友情链接
推荐
投诉
搜索:
帮助
小宝--读书笔记
精修内功!
zieckey.cublog.cn
管理博客
发表文章
留言
收藏夹
· 相关BLOG
· 好友BLOG
· 常去的地方
博客圈
音乐
相册
· 同学相片
· 西藏之行
· 我的大学
文章
· OS Linux
}
· Command Usage
· Install && Usage
· Soft Install && Usage
· Kernel
· Solaris
· Other
· C/C++
}
· Linux C/C++
· QT Embedded
· Standard C/C++
· Win32 C/C++
· E680
· Java
}
· J2ME
· J2SE
· J2EE
· Software Engineering
}
· Class Design Principle
· Arithmetic Data Structure
· Design Patterns
· Database
· Other
}
· Python
· Windows
· Networks
· Assemble
· Video && Image
· Hardware Design
· Other
· 人生如梦
}
· 修身养性
· 生活
· 音乐电影
· 职业生涯
· 搞笑
· 其它
首页
关于作者
思路决定出路,态度决定高度!
||
<<
>>
||
我的分类
文章列表 - Standard C/C++
C/C++返回内部静态成员的陷阱
<p align="center"><strong><font size="5"> C/C++返回内部静态成员的陷阱</font></strong></p> <p align="center"><strong><font size="3">陈皓</font></strong></p> <strong></strong> <p align="left"><font size="3"><strong><u>背景</u></strong><br><br>在我们用C/C ++开发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很 多开发人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,……
查看全文
发表于:2008-05-05 ┆
阅读(324)
┆
评论(1)
通过实例来说明C++虚函数表
By zieckey (http://blog.chinaunix.net/u/16292/)<br><br>C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。<br><br>对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实……
查看全文
发表于:2008-05-05 ┆
阅读(320)
┆
评论(0)
声明与函数、函数指针 (*(void (*)( ) )0)( )
概述<br><br> 在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。<br><br> 问题:声明与函数<br><br> 有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做?<br><br> 答案<br><br> 答案是 (*(void (*)( ) )0)( )。看起来确实令人头大,那好,让我们知难而上,从两个不同的途径来详细分析这个问题。<br><br> 答案分析:从尾到头……
查看全文
发表于:2008-05-05 ┆
阅读(372)
┆
评论(0)
函数指针的用法
By zieckey<br><br> 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址来调用数组数据,也可以使用指针变量指向函数代码的首地址来调用函数,指向函数代码首地址的指针变量就称为函数指针。<br><br>1.函数指针定义<br><br>函数类型 (*指针变量名)(形参列表);<br><br>“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量……
查看全文
发表于:2008-05-05 ┆
阅读(307)
┆
评论(0)
函数的返回类型为指针类型时的若干思考
By zieckey (http://blog.chinaunix.net/u/16292/index.html)<br><br>问题的引入:<br>看看下面的程序的输出:<br><br> <table style="border-collapse: collapse;" bgcolor="#f1f1f1" border="1" bordercolor="#999999" cellpadding="0" cellspacing="0" width="95%"><tbody><tr><td><p style="margin: 5px; line-height: 150%;"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">#</span><span style="color: rgb(255, 0, 0);">include</span> <span style="color: rgb(0, 0, 204);"><</s……
查看全文
发表于:2008-05-03 ┆
阅读(307)
┆
评论(0)
位域
一、位域<br><br> 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。<br> <br> C99规定int、unsigned int和bool可以作为位域类型,但编……
查看全文
发表于:2008-05-03 ┆
阅读(302)
┆
评论(0)
全局变量、局部变量、静态全局变量、静态局部变量的区别
全局变量、局部变量、静态全局变量、静态局部变量的区别<br><br>C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。<br><br>从作用域看:<br><br>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。<br><br>静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全……
查看全文
发表于:2008-05-03 ┆
阅读(633)
┆
评论(0)
栈和堆的区别
堆与栈的区别由以下几点:<br> <br><br> 管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,申请和释放工作由程序员控制,容易产生memory leak。<br><br> 空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M。当然,可以修改: <br><br> 打开工程,依次操作菜单如下:Project->Setting->Li……
查看全文
发表于:2008-05-03 ┆
阅读(320)
┆
评论(0)
用Eclipse开发C++
<P>By zieckey( <A href="mailto:zieckey@yahoo.com.cn">zieckey@yahoo.com.cn</A> )</P> <P>1、安装JDK和Eclipse<BR>这里就不多说,具体请见:<A href="http://blog.chinaunix.net/u/16292/showart_223309.html">http://blog.chinaunix.net/u/16292/showart_223309.html</A><BR>我的安装环境是jdk1.5,eclipse3.2.1</P> <P>2、安装C++的Ecilpse插件CDT<BR>cdt插件的下载:<BR><A href="http://www.eclipse.org/cdt/">http://www.eclipse.org/cdt/</A><BR><A href="http://download.eclipse.org/tools/cdt/builds/">http://downloa……
查看全文
发表于:2008-03-17 ┆
阅读(629)
┆
评论(0)
解除心头的困惑--纯虚函数
<DIV> <P><FONT color=#0909f7 size=5>摘要</FONT>:虚函数里面有一个很特殊的东东,那就是纯虚函数,关于纯虚函数的问题也是bbs上常见的话题,这里我想对此作一个小小的论述,希望能给初学者一个满意的解释。</P> <P><FONT color=#f70909 size=5>一、引入原因</FONT>:<BR> 1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。<BR> 2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。<BR> 为了解决上……
查看全文
发表于:2007-12-20 ┆
阅读(918)
┆
评论(1)
C中的符号扩展、EOF、fgetc函数的返回值问题?
ANSI C并没有定义char类型是有符号的,还是无符号的,它取决于各个编译器的决定。<br /> <DIV>那么fgetc函数,为什么这个函数返回一个int类型,然后又被当作字符类型被读呢?</DIV>
查看全文
发表于:2007-10-10 ┆
阅读(1091)
┆
评论(0)
C++中类的静态数据成员函数解析
作者:zieckey(<A href="mailto:zieckey@yahoo.com.cn"><FONT color=#0000ff>zieckey@yahoo.com.cn</FONT></A>)<BR>All Rights Reserved! <P>静态数据成员:<BR>下面看一个例子:<BR>#include <iostream.h><BR>class Point<BR>{<BR>public:<BR> void output()<BR> {<BR> }<BR> static void init()<BR> { <BR> } <BR>};<BR>void main( void )<BR>{<BR> Point pt;<BR> pt.init();<BR> pt.output(); <BR>}<BR>这样编译是不会有任何错误的。<BR>下面这样看<……
查看全文
发表于:2006-12-15 ┆
阅读(752)
┆
评论(0)
主函数main中变量( int argc,char **argv )的含义
strike朋友问到主函数main中变量( int argc,char **argv )的含义问题,这里<br><br>我给在网上找了个解释,比较清楚,贴在这里,望有所启发。<br><br> 看过多个Linux下的软件的源代码,发现很多项目都有main(int argc,char *argv[])或者 ( int argc,char **argv ),<br><br>在网上找到如下的说明。 <br> <br> 我刚接触到这两个变量时,根本不知道它们是用来做什么的,我想很多人也跟我一样,刚看到这两个变量时也是稀里糊涂的。<br><br>其实: int m……
查看全文
发表于:2006-06-03 ┆
阅读(2405)
┆
评论(4)
入门教程:实例详解C++友元
在说明什么是友元之前,我们先说明一下为什么需要友元与友元的缺点:<br><br> 通常对于普通函数来说,要访问类的保护成员是不可能的,如果想这么做那么必须把类的成员都生命成为public(共用的),然而这做带来的问题遍是任何外部函数都可以毫无约束的访问它操作它,c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作,避免把类成员全部设置成 public,最大限度的保护数据成员的安全。<br><br> 友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率,……
查看全文
发表于:2006-05-28 ┆
阅读(732)
┆
评论(0)
C++对象的拷贝与赋值操作
<span lang="EN-US"><font face="Times New Roman"><font size="3"><o:p></o:p></font></font></span> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="3"> 我发现一些同事在编写一个类时,知道什么时候需要实现拷贝构造函数和赋值操作,但不知道什么时候拷贝构造函数被调用,什么时候赋值操作被调用,甚至把二者混为一谈。</font></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font face="Times New Roman"><font size="3"……
查看全文
发表于:2006-05-28 ┆
阅读(572)
┆
评论(0)
C++的学习感想
很多人把学习C++语言当成学习VC了,我曾经就走过这样的弯路。当学了很长时间的VC后还是得回过头来学习C++语言本身。<br> <br> 那么学习C++从何处入手呢?<br> <br> C++语言相对于C语言来说引入了两个大的新东西,一个就是面向对象(具体来将就是类),另外就是模板技术(模板编程或者叫泛型编程是进来非常流行的 技术,在C#中虽然还没有对泛型编程的支持,但是相信在将来也一定会加入这一功能),模板是C++中比较复杂的部分,但是作为一个真正的C++程序员,这 部分很重要。尤其是对C++标准程序库的掌握尤为……
查看全文
发表于:2006-05-02 ┆
阅读(1446)
┆
评论(0)
名空间的使用
using 指示符使名字空间成员名可见就好像它们是在名字空间被定义的地方之外被声明的一样例如由于using 指示符名字空间cplusplus_primer 的成员就好像是在全局域中func()定义之前声明的一样using 指示符并没有为名字空间成员的名字声明局部的别名而是把名字空间的成员转移到包含该名字空间定义的那个域中比如如下代码<br>namespace A {<br>int i, j;<br>}<br>对域中有如下using 声明的代码来说<br>using namespace A;<br>看起来就像<br>int i, j;<br>我们来看个例子它说明了using 声明的影响它保留了该名字空间域但是将……
查看全文
发表于:2006-05-02 ┆
阅读(608)
┆
评论(0)
sprintf 详细用法
在开始学习C 语言时接触到的第二个函数(我猜第一个是main),说<br>起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf 了解多<br>吗?在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。<br>由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,<br>后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。所以本文着重介绍sprintf,有时<br>也穿插着用用pritnf。<br>sprintf 是个变参函数,定……
查看全文
发表于:2006-05-01 ┆
阅读(1021)
┆
评论(1)
C++运算符重载赋值运算符
自定义类的<b><font color="#ff0000">赋值运算符重载函数</font></b>的作用与内置赋值运算符的作用类似,但是要要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下,如果没有指定默认的赋值运算符重载函数,那么系统将会自动提供一个赋值运算符重载函数。 <br> <br> 赋值运算符重载函数的定义与其它运算符重载函数的定义是差不多的。 <br> <br> 下面我们以实例说明如何使用它,代码如下:<br> <p class="code"><font color="#008000">//程序作者:管宁 </font> <br><fo……
查看全文
发表于:2006-04-22 ┆
阅读(590)
┆
评论(0)
怎么样写一个Makfile文件
陈皓<br>概述——<br>什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专……
查看全文
发表于:2006-04-16 ┆
阅读(1202)
┆
评论(0)