将Union指针声明为它的功能

时间:2014-12-30 14:44:49

标签: c function pointers delegates unions

我有一些我无法理解的代码。

typedef double Align;
union header{
    struct{
        union header *ptr;
        unsigned int size;
    }s;
    Align x;
};
typedef union header Header;   

因此,在创建了这个联盟后,它以一种奇怪的方式使用。

Header *morecore(unsigned);    

然后将其称为普通函数

Header *p;
p = morecore(nunits);

这究竟是如何工作的?在任何地方都没有任何代码可以说明这个"功能"的工作原理。

2 个答案:

答案 0 :(得分:3)

Header *morecore(unsigned);

此函数返回类型为Header的指针。因此,返回值被分配给相同的类型

Header *p = morecore(nunits);

所以基本上函数morecore()在内部执行一些操作并返回一个指针,并将此返回值赋给p

答案 1 :(得分:1)

Header *morecore(unsigned);

是名为morecore的函数的前向声明,它接受类型为unsigned的1个参数,并返回指向Header的指针。它与Header的定义方式无关。此函数在代码中的某个位置与其正文一起定义。