C的结构新手,有人可以帮我定义这些结构吗?

时间:2018-06-18 02:19:31

标签: c pointers struct typedef

我对C仍然很新,但是慢慢学习,我知道基本结构如何工作,但我正在学习这些新结构。我究竟如何使用它们以及它们如何以记忆方式工作?

非常感谢

struct in struct ??

    let mySearchBar = UISearchBar()
    mySearchBar.frame = CGRect(x: 0, y: view.frame.size.height - 50, width: view.frame.size.width, height: 50)
    mySearchBar.showsCancelButton = true
    mySearchBar.placeholder = "sample"
    self.view.addSubview(mySearchBar)

struct指向自己?

struct Multi {
   int which;
     union 
     {
       float f;
       double d;
       int i;
     } data;
};

这件事

typedef struct Other {
    double x;
    int* y[2];
    struct Other* z;
} Other;

更多

typedef int const * (* const CallMe)(const int *);

非常感谢。

如果可以给出一个例子来说明如何声明和初始化该类型的单个变量,那就太好了。我喜欢用backkwards来尝试自己。

1 个答案:

答案 0 :(得分:1)

第一种情况(使用union

这不是结构中的结构。 data实际上是一个联盟(如果您有兴趣,请参阅工会here)。如果你只是学习结构,不要介意工会 - 他们并没有经常使用结构,而你可能会在两者之间混淆。

这个设置在C中很经典。你有一个字段可以告诉你应该使用哪个字段。

第二种情况

不,这不是指向自身的结构;这意味着struct Other包含指向struct Other的指针。所以,你可以:

struct Other s1;
struct Other s2;
s2.z = &s1; // Now s2.z equals s1's address.

第三种情况

这与struct无关。它是函数指针的typedef,它指向int,并返回指向int的指针。

第四种情况

再次,这不是一个结构,而是一个联盟。此联合包含(对于theta)指向函数的指针,该函数不带参数并且不返回任何内容,或者(对于iota)指向函数的指针,该函数不接受任何参数并返回void指针。 / p>