| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4791 人关注过本帖
标题:自认为基础很好的请进,反正我是不信我学好了helllo word!
只看楼主 加入收藏
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:0 
这么深奥的C!!小弟惭愧!!
2011-08-13 11:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
6:链表问题!学了数组 学了链表觉得二个都是各有所长 但又觉得是鸡肋,大侠们功力深厚 让小弟开下眼界 有没比链表更完善的东西?

这个问题跟第1个双层for循环的答案是一样的,是现实需要选择什么数学模型,没有谁比谁更完善。线性表、链表、树、离散数据结构……这些东西都是数学模型,在数学课程中学,怎么用编程实现,那是你写程序的经验问题,不是在学语言的时候学的。任何语言都可以实现各种数学模型,市场上早有成熟的相应语言工具,人家打磨了几十年的东西,设计怎么说都比你现在自己弄成熟得多(MFC库函数中就有很多很完善的算法,包括多核算法,甚至有中国的农历类,真靠TNND)。自己写的那些算法,练练手可以,真要拿出来应用,还差得远。

学编程的核心,是对现实的模型找出解法,用程序实现它,并且要色、香、味俱全,不是闷头运算一通给个结果人看就算了。界面呢?容错性呢?可维护性呢?这些都到哪了?整天弄金字塔、八皇后,能吃饭么!

授人以渔,不授人以鱼。
2011-08-13 11:36
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 70楼 TonyDeng
可是我用的是32位的Windows,没有用64位的,也就是说只能在x64上面才可以不用字节对齐吗?

My life is brilliant
2011-08-13 11:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
7:宏和类与析(构)函数问题!看书真是很难理解入宏怎么就不能操作类的私有数据 茫茫多的问题 第7真是一点都不懂。求高手 详细解答

首先,什么是“类”?“类”在C++中是一段封闭的代码块,小型程序。类(class)是从结构(struct)中发展来的,在C中,结构这种数据模型本来就是希望用于处理类似后来类的思维,只是经典C的语法和构造都无法提供这种实现途径(但很多优秀的程序员已经开发出大量足以仿真的面向对象编程代码,是在传统C面向过程的基础上实现的,虽然本质上似是而非,但其外在表现确实是中规中矩的,早期3.0版本以前的Windows系统就是用这种模式写出来的)。struct是把相关的数据组装在一起作为共同体处理的,正如我前面特意说的学生成绩表例子,就是用struct结构来处理是最合理的,因为此时就是面向一个学生的记录(这其实是数据库中记录的概念,结构体中每个元素就是字段,构造一个此结构体的数组,就是一个数据库表格,行对应记录,列对应字段。事实上,在C++中就明确宣称这些元素为字段),这是从问题本身出发来构造编程模型的例子,亦即所谓的面向对象,对象就是学生成绩表,所有的操作都围绕这个对象进行,包括统计、排序、检索、增加、删除、插入等等。

然而,在C的struct中,只能包括数据,无法包括运算和动作,但正如我们从逻辑上看到的,面向这个学生成绩表的处理功能,就是围绕这个对象的,对这个对象特定的操作,没有理由是全局函数的形式,人家对另外的表,比如课程表,处理办法与此完全不同,那么,按照归类的原则,是谁的功能就归到谁身上,捆绑到一起,数据、函数,全都封装起来,宣告“这是你的”。这就是类,在struct的基础上加入函数,因为我们的大脑和理性思维需要。有人如果宣称死守C拒绝C++的类,那么就意味着他拒绝这种理性处理思维,他要把所有东西零散地堆在桌面上到时再找,并且谁都可以用那些工具以及窥探隐私。那当然,因为C的函数是全局性的,在一个大程序系统中,处理学生档案的模块程序很容易就可以从处理老师的工资模块中提取出老师的工资单,只要他知道那个函数名就可以了。

C程序员用模块文件来分隔逻辑功能,即每个相对独立的模块写在一个.C文件上,一个优秀C程序员的指标之一,是看他写程序时有没有这种划分功能模块的意识。虽然实际上这种形式上分隔并非实际上的,但起码在逻辑上他表现出了条理性,而不是把数万行代码全部放在同一个.C文件中(千万不要觉得这样很厉害)。C++在语言上彻底实现了分隔的目的,不过是把原先C形式上的东西实质化了而已。

C中的struct,数据是公开的,从外部可以很轻易地得到其中元素的值,但C++的class把这个公开性反了过来,默认就是隐藏的,外部无法得到里面东西的值,除非请求它告诉你某个元素的值。这种制度是任何一个组织化的公司、企业、事业单位都遵循的原则——老板没有权力直接指挥员工,他只能通过指挥链一层一层地把指令传达下去,信息也必须同样反馈回来。这就是类的私有性,它来源于C中一对花括号的变量作用域原则。

宏是什么东西呢?宏是编译器在对程序源代码编译时作的文本处理,它就是作文本查找和替换工作的,只要经过第一遍预处理之后的文本,才正式提交作编译处理(编译之后还有连接阶段,最终形成EXE可执行文件,这就是编译三部曲)。在预处理阶段,程序代码的什么功能都是不起作用的,只要是源代码文本文件中的字眼,就无一例外地被处理了。这根本就不是访问数据的问题,而是预处理给你填写数据的问题。#define PI 3.1415926,不过是方便你在程序中写PI比写3.1415926快的多、容易认识得多而已,在预处理后提交给编译程序的文本,在你写PI的地方已经换回3.1415926了。不信你可以在编译时只做预处理看看,它最终把你的源程序弄成什么样子了,那个才是最终的程序代码,嘿嘿嘿嘿~

析构函数是类实体销毁时(类似自动变量在作用时间后消失一样)自动执行的代码,让你有机会把屁股擦干净。这是C架构无法提供的功能,但C程序员要自己写一段代码做同样的事,不过它不会自动执行,要你主动写清楚它在什么时候执行,即显式调用函数。
收到的鲜花

授人以渔,不授人以鱼。
2011-08-13 12:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 73楼 lz1091914999
x86系列包括32位和64位的(我们用的机器都是x86系列),都要对齐,只是程序代码中无需明显强调要对齐,不对齐也不会出问题(前提是没有改过那个寄存器标志)。一般来说,编译器自己会做合理的安排,默认的设置没什么特殊需求不用动它,如何优化,它会做好的,有时人工干预反而会弄巧成拙。

授人以渔,不授人以鱼。
2011-08-13 12:27
我有一个梦
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-8-13
收藏
得分:0 
我学了几个月了,也没看出这么多深噢的问题,佩服,顶!
2011-08-13 12:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果还不了解什么类,下面是一个例子,不用懂那个语言,单看代码都猜得到它的工作方式。
https://bbs.bccn.net/thread-347482-1-1.html


[ 本帖最后由 TonyDeng 于 2011-8-13 15:46 编辑 ]

授人以渔,不授人以鱼。
2011-08-13 13:07
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 
回复 61楼 TonyDeng
我问题中没有字节对齐 不属于我问的 即便不懂我会自己去看

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-08-13 15:04
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 
回复 62楼 TonyDeng
指针问题 我只是想知道 是不是绝对 因为我看的书 都是说它不好 我怕被书误导

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-08-13 15:05
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 
回复 72楼 TonyDeng
回 6:链表问题 ! 我之所以问这问题 是我编译学生管理系统 用链表时(我觉得不够用)
 你说的言之有理 的确别人打拼了十几年 自己弄得 自己练练手就行

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-08-13 15:13
快速回复:自认为基础很好的请进,反正我是不信我学好了helllo word!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029753 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved