![]() |
1
6
如果不喜欢强制转换,则可以始终使用联合(以及一个标志来指示应将联合解释为哪种类型)
|
![]() |
2
10
不,在C语言中,数组的每个元素都必须是相同的类型(因此大小也相同)。 您可能需要添加另一个抽象层,在这种情况下,您需要用元素所具有的类型来注释元素,例如,您可以使一个结构数组看起来像:
您必须使用插入的实际类型更新“type”,并在读取数组时对此做出决定,然后在“realeem”成员中存储指向实际元素的指针。
|
![]() |
3
2
不,C数组的大小是常量,必须在编译时知道。但您可以通过使用指针和动态分配来绕过这个问题。 这里的问题不是效率而是类型安全。强制转换没有运行时性能成本,它只是一种与编译器对话的机制,要求它“信任您”,并假设在一系列位后面有某种类型。我们谈论的是安全,因为如果你错了,那么任何事情都可能在运行时发生。
在C(静态语言)中,不可能构造不同类型的数组。您所能做的是构造一个特定结构的数组,但该结构保留指向不同大小对象的指针。例如,让结构保持
如果您希望这些对象中的每一个 表现 与其他方法不同,您可以使用函数指针数组来模拟多态性,然后根据需要向指向任何函数的结构添加函数指针。 |
![]() |
4
0
强制转换并不是低效的,因为它们只是告诉计算机如何解释内存区域。当编译到程序集时,编译器将创建程序集,根据需要解释内存区域。 |
![]() |
5
0
为此,我们使用指向实际对象的指针数组。 指针的大小都相同。 它们指向的对象可以是不同的大小。 一个“歧视性联盟”对此很有效。
数组指针指向
|
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |
![]() |
Geremia · 2D NumPy数组+1D数组? 6 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 7 月前 |
![]() |
Paul Williams · 迭代数组时输出有问题 7 月前 |