问管理C中没有对象的东西--为什么我可以在C中的任何地方声明变量呢?EN

问管理C中没有对象的东西--为什么我可以在C中的任何地方声明变量呢?EN

c89不允许这样做,但c99允许。虽然花了很长时间才开始流行,但一些编译器(包括gcc)终于开始实现c99特性了。IMO,如果您想使用OOP,您可能应该坚持使用C++或尝试目标C。再次尝试在C之上重新创建OOP并没有多大意义。如果你坚持要这么做,是的,你可以传递一个指向结构的指针,作为对this的模仿--但这仍然不是一个好主意。

当您需要对数据结构进行操作时,传递(指针到)结构通常是有意义的。但是,我不建议非常努力地将函数组合在一起,让它们都将指向结构的指针作为它们的第一个参数,因为其他语言就是这样实现的。

如果您碰巧有一些函数都是用特定的结构操作的,并且它们都收到指向该结构的指针作为它们的第一个参数是非常有意义的,那就太好了--但是不要因为C++碰巧这样做就不得不强制它。

编辑:关于在没有对象的情况下如何管理:嗯,至少在我编写C时,我倾向于对单个字符进行更频繁的操作。值得注意的是,在C++中,我通常有几行相对较长的代码;而在C语言中,我倾向于使用大量的短行代码。

代码和数据之间有更多的分离,但在某种程度上它们仍然是耦合的--二叉树(例如)仍然需要代码来插入节点、删除节点、遍历树等等。同样,这些操作的代码需要知道结构的布局,以及指针的名称等等。

就我个人而言,我更倾向于在C代码中使用常见的命名约定,因此(举几个例子),指向二叉树中子树的指针总是被命名为left和right。如果我使用链接列表(罕见),指向下一个节点的指针总是命名为next (如果它是双链接的,则另一个是prev)。这对于能够编写代码非常有帮助,而不必花费大量时间查找结构定义来确定我这次使用的名称。

相关推荐

冒险王2如何选精灵 冒险王2选精灵方法
mobile365bet365com

冒险王2如何选精灵 冒险王2选精灵方法

📅 07-25 👁️ 1390
vue date为什么必须是一个函数
mobile365bet365com

vue date为什么必须是一个函数

📅 08-03 👁️ 105
𠕇的意思,𠕇的解释,𠕇的拼音,𠕇的部首
365bet足球实时动画

𠕇的意思,𠕇的解释,𠕇的拼音,𠕇的部首

📅 07-15 👁️ 497
史上第4次进决赛 葡萄牙拿到第3冠 C罗也一样!
mobile365bet365com

史上第4次进决赛 葡萄牙拿到第3冠 C罗也一样!

📅 07-07 👁️ 235
dnf一般堆多少属强 dnf一般堆多少属强力量
爱彩365彩票官方app下载

dnf一般堆多少属强 dnf一般堆多少属强力量

📅 08-17 👁️ 2248
世界十大食人猛兽 会吃人的动物有哪些 恐怖食人动物盘点→MAIGOO生活榜
点点搠搠
爱彩365彩票官方app下载

点点搠搠

📅 08-09 👁️ 9331
魔兽怀旧服山地披风哪里有
mobile365bet365com

魔兽怀旧服山地披风哪里有

📅 07-22 👁️ 6209
【夜读】如何迅速找到自己的天赋?请回答这3个问题
爱彩365彩票官方app下载

【夜读】如何迅速找到自己的天赋?请回答这3个问题

📅 06-27 👁️ 2263