1
6
即使你想继续这样做,你也不需要使用
虽然
但是,好消息是您可以继续使用双指针方法,使用一个普通的
在
通常,使用指针强制转换的规则是:首先将指针强制转换回您知道的指针类型, 然后 撤销引用。 |
2
4
Linux内核以一种有趣的方式完成这项工作。会有点像
阅读Linux内核源代码,了解有关此技术的许多示例。 |
3
2
既然你只有两种可能的类型,我会用一个联合来处理这类事情,比如:
请注意,我没有使用您使用的指针对指针方案。我不太相信它的必要性,我建议的代码不需要这样的技术。 |
4
2
首先,检查 联合构造 由mipadi建议;这是一种非常可读和有效的 处理多态性 . 靠近您的代码片段/问题,快速浏览一下,我看不到指针指针引入的双间接寻址的需要/使用。如果XXXX_fire()方法的参数是指向XXXX对象的[直接]指针(如果逻辑的其余部分中的类型转换等要相应地遵循),则整个逻辑的工作方式相同。 当中间指针的值可能在某个点发生更改时,指向指针的指针非常有用。 . 例如,如果基础对象被移动,或者它被完全不同的对象替换(比如说,在游戏中一个新级别的更好装备的船部分……)
编辑
(关于
使用双间接法管理可能解除分配的对象的“震源组”
.
在insight中,C语言中的一小段可能更明确;对不起,我用文字描述了这一点… |
5
1
如果 您的项目符号所有者经常被更改(例如取消分配),指向指针方法的指针是合适的。联合解决方案并没有直接解决这一问题;正如前面介绍的那样,它不支持在不触及每艘舰艇子弹上的指针的情况下解除分配舰艇。当然,在某些实现中,这可能是一个实际的解决方案,例如,如果需要查找给定玩家的所有项目符号,则可以维护它们的链接列表:每个项目符号的“下一个”项目符号“指针”和每个玩家列表的“最后一个”项目符号“指针”。 而不是单独分配每一颗子弹,我也会遵循MJV的建议,预先分配一些子弹,然后选择下一个可用的。在链表实现中,可以使用相同的__next_bullet_指针来维护一个当前未使用的预先分配的项目列表。这种方法的优点是,如果用完了,您可以轻松地分配更多,而不是维护一个数组,也就是说,如果可用项目符号列表为空,只需根据需要将它们添加到列表中即可。同样地,把expired(exploded?)项目符号回到可用项目符号列表中,分配的数量将自动适应所需的数量。
另一件事是,你可能不需要知道哪个不明飞行物(或其他敌人)拥有一颗给定的子弹;只要有一个指针(例如。
注意,这个技巧依赖于指向不同类型的结构的指针是可互换的,并且单个枚举在每种类型的结构中存储在相同的偏移量。实际上,这些不是不合理的假设,但我不确定标准C中是否严格保证了这种行为(但是,例如
|
6
1
我想要这个:
如果只有固定的玩家,你最好有一个
或者你可以有一个数组,或者… 编辑:不稳定的玩家,一个可怕的过度设计的解决方案:
或者,如果没有O(N)内存,引用计数可能工作得很好。
而且,这两种都不是螺纹安全。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |