C++结构本身?

2024-04-16 14:17:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图将这个代码移植到Python,但是在C++中有些东西我不太明白(我知道一些C++,但这超出了我的理解):

typedef struct huffnode_s
{
    struct huffnode_s *zero;
    struct huffnode_s *one;
    unsigned char val;
    float freq;
} huffnode_t;

我不明白huffnode怎么会在它自己里面,我以前从未见过,也不太理解它。这意味着什么?如果有人可以,python的等价物是什么?在


Tags: 代码valfloatonestructfreqzerochar
3条回答

这个。在

class Huffnode(object):
    def __init__(self, zero, one, val, freq):
        """zero and one are Huffnode's, val is a 'char' and freq is a float."""
        self.zero = zero
        self.one = one
        self.val = val
        self.freq = freq

然后,可以将各种C函数重构为该类的方法。在

或者这个。在

^{pr2}$

如果你希望你的C函数保持函数。在

就这样。在

h0 = Huffnode(None, None, 'x', 0.0)
h1 = Huffnode(None, None, 'y', 1.0)
h2 = Huffnode(h0, h1, 'z', 2.0)

这就是所需要的。在

huffnode_s不在其内部,只有指向huffnode_s的指针在里面。因为指针的大小是已知的,所以没有问题。在

它本身没有结构。它有一个指向该结构的指针。在

在内存结构huffnode_s看起来像(32位机器):


|-----------------huffnode_s*0-4字节------------------

|-----------------huffnode_s*一个-4字节------------------

|无符号字符值-1字节+3字节填充======|

|---------------浮点频率-4字节----------------------------------


这些大小会因机器的不同而不同,它在内存中的外观由编译器决定。在

相关问题 更多 >