- 博客(28)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 谭浩强C第四版126页例5.4的瑕疵及随想
谭浩强C第四版126页例5.4的瑕疵及随想 126页例5.4如下:在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款到人数,以及平均每人捐款的数目。程序如下:#include#define SUN 100000int main( ){ floatamount, aver, total;
2012-10-30 15:39:37
1561
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 指针之美
指针之美看到CSDN网站论坛上有一个专题《指针的危害》,许多人提出了不同的看法,我基本上都不赞同,所以忍不住要提出我的看法。说指针是天使者只说了指针的高效率;说指针是魔鬼者则认为指针容易致命的错误,应当尽量少用或用引用来代替云云。大家的目光只是局限在单个变量组成的教科书的例题上。现在我给大家提出一个现实的问题:每个人的信息可以看作单个的结构变量,尽管每个人是独立的,但是他们是有
2012-06-15 08:44:56
1882
15
原创 《C++语言释难解惑》作者敬告读者(2)
《C++语言释难解惑》作者敬告读者(2) 有读者说下载此书是需要积分,希望我把积分设置为零,可我费了半天劲也没搞清楚怎么设置;还有的读者说找不到下载地址。我希望这些读者干脆把邮箱告诉我,我发到您的邮箱里去。或者您往我邮箱里发信,我的邮箱是chenshuzhenteacher@126.com,即陈树振老师的意思。我们写的这本书多少有点难,并不完全适合初学者。如果您看
2013-01-31 21:56:20
1506
2
原创 《C++语言释难解惑》作者敬告读者(1)
《C++语言释难解惑》作者敬告读者(1)有读者云:“第9页,看到这么一段: “这是因为C语言为了照顾初学者,使他们在没有学习函数声明和预处理命令之前就能够进行简单的输入输出,以利于学习,所以对两个标准函数printf和scanf予以照顾,用户在使用它们时可以不声明,当然用户也就可以不必写出#include 命令了。” “为了照顾初学者”?!这是老人家想当然的
2012-12-12 16:12:44
1531
原创 书稿《C++释难解惑》(C++130个问题)已上传到CSDN,欢迎下载
我已经将我与陈翼男博士合写的的书稿《C++释难解惑》上传到CSDN,欢迎朋友们下载。我做过10年程序员,在大学教过15年书,对C++内部机制有较深入的理解。陈翼男博士在飞利浦亚洲研究院有较多的编程实践,很有心得。本书能帮您解决C++的许多疑惑,并让您学到实际编程的许多经验。本书尚未出版,先放到网上给大家免费下载和阅览。下载链接地址为:http://download.csdn.n
2012-12-01 12:07:13
3086
21
原创 定义函数的指针,C++和C不同是因为函数重载
定义函数的指针,C++和C不同是因为函数重载在C语言里,一个指针可以指向一个函数。这个指针也有两个属性,但一个是函数的入口地址,另一个是函数的返值类型。例如下面的程序,它在C语言里是正确的:int time12(int i){ return(i%12);} int main(){ int(*fp)()=time12;
2012-12-01 11:28:54
1036
1
原创 对谭浩强《C程序设计》第四版40页表3.1中的\?的测试
对谭浩强《C程序设计》第四版40页表3.1中的\?的测试#includeint main( ){ charch='\?'; printf("ch=%c\n",ch); return0;}程序执行后输出:?笔者对谭浩强第四版40页表3.1中的‘\?’有疑问,编译连接时VisualC++6.0没有报告错误和警告,看来
2012-11-04 19:45:23
767
1
原创 彻底解剖C++引用机制-汇编级别的深层探索
彻底解剖C++引用机制-汇编级别的深层探索此文是我与陈翼男博士共同研究,此文深究其理,欲精通C++者不可不察。C++的引用是一个非常重要的概念。它是被引用的变量的别名,它本身不是变量,它应该与被引用的变量代表同一个地址的内容;而对它的读写的方式却又与变量的一样,所以国内有的教科书甚至称其为‘引用变量’。引用到底是什么,它的内在实现是怎样的,只有剖析使用引用的C++程序的反汇编源码才能揭
2012-11-03 20:46:19
1066
原创 C++支持缺省参数值并非仅仅为了函数调用灵活
C++支持缺省参数值并非仅仅为了函数调用灵活与其说C++支持缺省参数值是为了让巨人写的函数适用于各种小人,不如说是为了让巨人写的类适用于各种小人。带有缺省参数值的函数最常见的是构造函数。构造函数是为了创建对象的,所以缺省参数值是为了更灵活地建立对象。假设微软做了一个类,用它能生成各种图形窗口对象。微软为了使这个类能生成各种样式的窗口,进而能适应各种高水平用户的需要,肯定在构
2012-11-03 19:32:42
1383
原创 如何避免头文件被重复包含
如何避免头文件被重复包含?一般情况下,我们都是把函数声明、类定义、模板定义等写到一个头文件里,需要时将相应的头文件用#include包含到源文件(*.cpp文件)里来。但头文件中又允许包含其它的头文件,这样就难免发生某个头文件被重复地包含。我们可以使用编译预处理命令避免这种情况的发生。例如,你想确保头文件max.h不会被重复包含,则你可以采取如下的形式:
2012-11-02 10:55:59
14444
7
原创 前缀++类重载函数的返值是void或int都不妥-与诸位老师商榷
前缀++类重载函数的返值是void或int都不妥-与诸位老师商榷我的书稿还对流行的教科书存在的一些问题进行了探讨,笔者相信,连教科书都会出现的问题一定具有探讨的必要。在书稿中隐去了发生问题的教科书的名字,但是在博客文章中我将指出这些书的名字。 前缀++类运算符重载函数的返值是void的错误有3本书这样做。它们是:1苑延闿《C++语言和面向对象程序设计
2012-10-29 10:26:39
1042
原创 前缀++友元重载函数的返值为类名是不妥的-与邓振杰老师商榷
前缀++友元重载函数的返值为类名是不妥的-与邓振杰老师商榷我的书稿还对流行的教科书存在的一些问题进行了探讨,笔者相信,连教科书都会出现的问题一定具有探讨的必要。在书稿中隐去了发生问题的教科书的名字,但是在博客文章中我将指出这些书的名字。笔者上一篇博文“前缀++重载函数的返值为类名是不妥的-与吕凤翥老师等商榷”论述了前缀++类运算符重载函数的返值是类名的问题。友元运算符重载函
2012-10-28 10:27:00
1555
原创 前缀++类重载函数的返值为类名是不妥的-与吕凤翥老师等商榷
前缀++类运算符重载函数的返值是类名的讨论-与吕凤翥老师等商榷我的书稿还对流行的教科书存在的一些问题进行了探讨,笔者相信,连教科书都会出现的问题一定具有探讨的必要。在书稿中隐去了发生问题的教科书的名字,但是在博客文章中我将指出这些书的名字。前缀++类运算符重载函数的返值是类名,我以为不妥有3本书这样做。它们是:1吕凤翥《C++语言基础教程》、清华版、ISBN
2012-10-26 09:59:03
1224
1
原创 细说C++的初始化问题
细说C++的初始化问题其实初始化问题在C语言中就十分重要,它与赋值运算的区别许多教科书强调的很不够,那个时候还不太要紧,但是在C++中必须要区分得十分清楚,任何马虎都是不允许的,这是因为这是因为初始化符对象将引起构造函数的调用,而赋值运算就决不会。我们知道,在C语言里变量和数组的初始化都是用等号表示的,例如:int i=0;,这里不能把等号看成是赋值运算符,而应当看成是初始化的
2012-10-25 11:50:24
952
1
原创 析构函数的名字是否包括字符‘~’?
析构函数的名字是否包括字符‘~’?我的书稿还对流行的教科书存在的一些问题进行了探讨,笔者相信,连教科书都会出现的问题一定具有探讨的必要。在书稿中隐去了发生问题的教科书的名字,但是在博客文章中我将指出这些书的名字。孟威、刘慧宁、机工版、ISBN:7-111-08318-0;83页“析构函数的函数名应为类名前加‘~’”有教科书云:“析构函数的函数名应为类名前加‘~’”,
2012-10-25 11:49:24
1779
2
原创 构造函数和析构函数可以是私有或保护的吗?
构造函数和析构函数可以是私有或保护的吗? 我的书稿还对流行的教科书存在的一些问题进行了探讨,笔者相信,连教科书都会出现的问题一定具有探讨的必要。在书稿中隐去了发生问题的教科书的名字,但是在博客文章中我将指出这些书的名字。孟威、刘慧宁、机工版、ISBN:7-111-08318-0;78页“构造函数应声明为公有函数”,83页第3行“它(指析构函数)也是公有的函数”
2012-10-23 09:35:39
6852
6
原创 const引用的用途
const引用的用途const引用也是应用在函数调用的传参方面。假设我们希望能确保被调函数不会改变主调函数数据的值,那么使用const引用传参既确保了被调函数不会改变主调函数的数据,又不会像非指针、非引用的参数那样要发生复制,因而减少了时间的消耗。(1)若实参非const而形参const则正确却不合理。例如:#include void say(const&ra)
2012-10-23 09:34:22
6825
1
原创 C++为什么要有构造函数和析构函数
C++为什么要有构造函数和析构函数在我们过去学习C语言编程的时候,我们通常生成的变量都是放在栈区里(auto存储类型)。然而,真正处理实际问题的程序却常常将变量或数组生成在堆区里。假设我们定义了一个对象obj,此对象有一个占存储很大的成员member,将来要放很大的一篇文章,则我们不希望这个字符数组出现在栈区,而是希望它出现在堆区,如下图所示, 为了实现我们
2012-10-22 10:23:23
6158
2
原创 C++函数声明规定只能为原型形式,真实目的是为了函数重载
C++函数声明规定只能为原型形式,真实目的是为了函数重载我们说C++语言在技术上全面地兼容了C语言,并不意味着C++对C语言所有的非技术的东西都兼容。例如,对于函数声明的非原型形式,C++语言将不再支持,其原因是函数的重载必须有函数原型声明形式的支持。例如:#include void fun(); //①非原型的函数声明,C++不允许void main()
2012-10-22 10:22:13
2788
转载 好文章:裘宗燕:C/C++ 语言中的表达式求值
裘宗燕:C/C++语言中的表达式求值经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout C++ 不是规定 <<操作左结合吗?是C++书上写错了,还是这个系统的实现有问题?要弄
2012-10-21 20:37:02
792
1
原创 符号‘::’有时候不是运算符
符号‘::’有时候不是运算符在自然语言里,一个单词的确切含义往往要有它所处的句子来决定,即所谓上下文(context)。C语言和C++都是利用这种一字多用,来减少符号的数量。它的所谓‘运算符’往往出现在表达式以外,这个时候其实它不作为运算符用。符号‘::’称为作用域运算符,又可称为作用域限定符或者作用域分辨操作符,但是出现在下面就它却不是作运算符用。它在这里表示,写在它后面的成员函
2012-10-20 10:54:55
2245
原创 函数重载与参数缺省值共用可能引起两意性
函数重载与参数缺省值共用可能引起两意性函数的重载与函数的参数缺省值都使得程序的设计和书写与人类的自然语言更接近,极大地方便于我们面向对象。但是,如果把这二者合起来用,却又可能会发生两意性问题。让我们观察下面的例子: 例2‑2:#include void fun(){ cout} void fun(int i =0)
2012-10-20 10:46:41
1038
1
原创 C++为什么不提倡使用scanf和printf函数
C++为什么不提倡使用scanf和printf函数最重要的原因当然是C++提供了流对象‘>>’和‘’,它们代表了新观念。流对象能输出对象,而printf函数和scanf函数不能。此外,起码还有下面两个次要原因。首先让我们观察一下printf函数和scanf函数的声明,它们分别是:int printf( char *, ...);和int scanf( char *, .
2012-10-20 10:44:49
18848
8
原创 有了const和inline,宏定义就‘光荣退休了’吗?
有了const和inline,宏定义就‘光荣退休了’吗?我的书稿还对流行的教科书存在的一些问题进行了探讨,例如‘++’运算符重载函数的返值问题等。笔者相信,连教科书都会出现的问题一定具有探讨的必要。在书稿中隐去了发生问题的教科书的名字,但是在博客文章中我将指出这些书的名字。经济科学出版社2000年出版的全国高自考指定教材《面向对象程序设计》,作者是中国科技大学的教授刘振安、
2012-10-17 19:54:36
1064
原创 请大家看一看我国教材的粗制滥造和抄袭能达到怎样的程度
我于2002年、2003年、2004年在北京民办大学教授C++,使用的教材是经济科学出版社2000年出版的全国高自考指定教材,作者是中国科技大学的教授刘振安、ISBN:7-5058-1997-6/G.422,书中错误多如牛毛,我每次在课堂上都要拿出时间来领着学生改书,急得我满头大汗,这是我一生用过的最烂的一本书,我如今退休在家,每思及此仍然耿耿于怀。我曾经到经济科学出版社兴师问罪,当时的主编是一个
2012-10-16 20:40:22
3407
13
原创 函数重载机制的奥秘
函数重载机制的奥秘C++是怎么区分同名的函数呢?原来是编译器悄悄使用了一个称作名字分裂规则的机制。现代民俗给女孩子起名喜欢‘娜’、‘薇’等字,一个班出现两个‘李娜’,不是什么新鲜事,然而老师居然也能应付。老师是怎么做的呢?老师把她们的名字进行了扩展,把能区分她们一些特性加到姓名里来了,于是乎,出现了‘大李娜’、‘小李娜’、‘胖李娜’、‘瘦李娜’。假如她们高矮、胖瘦都一样,老师也有办法,
2012-10-13 10:38:07
1846
原创 谈谈怎样读《C++primer 3、4两版》
谈谈怎样读《C++primer 3、4两版》C++primer是公认的经典著作,网上一些常见提法我觉得容易误导真正的初学者,对此我心中很不安。我是一个老汉,64岁了,编过10年的程序,讲过14年的C、C++、和软件工程。我要诚实地告诉青年朋友们,我并没有详细地阅读这两本书,仅仅是浏览而已,按说无资格发言,但是我仍然忍不住要对年轻人说几句,不妥之处在所难免,欢迎大家指正。首先我要表达
2012-07-22 16:58:20
3714
3
原创 理解C语言刁钻定义语句的斩麻快刀:自内向外读
理解C语言刁钻定义语句的斩麻快刀:自内向外读 今天在CSDN论坛见到A_Zhao发表于2012-06-18 06:41:16《关于C语言声明、指针、数组、函数、typedef...》引起论坛推荐和朋友们的热议。A_Zhao的文章很长,因为健康欠佳,力不从心,我大概看了一下,没怎么看懂。我感觉他的方法不容易,我知难而退了。其实早有书籍讲解过这个问题,方法很简单,看来朋
2012-06-21 15:46:15
1524
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人