Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';这个静态结构的目的是什么?_C++_C_Struct - Fatal编程技术网

C++ 什么';这个静态结构的目的是什么?

C++ 什么';这个静态结构的目的是什么?,c++,c,struct,C++,C,Struct,我偶然发现了下面的代码,我对它的用途有点困惑 struct bob{ int myNum; struct bob * next; }; static struct bob_stuff{ int theNum; struct bob *lists; } bob; 我知道第二个结构是静态的,并且被初始化为bob结构,但是为什么要这样做呢?但我真的不知道为什么要有两个结构。看起来像“模块”(或者“类”,如果你愿意的话)状态,用于维护一组单独链接的整数列表 当然,命名

我偶然发现了下面的代码,我对它的用途有点困惑

struct bob{
    int myNum;
    struct bob * next;
};

static struct bob_stuff{
    int theNum;
    struct bob *lists;
} bob;
我知道第二个结构是静态的,并且被初始化为bob结构,但是为什么要这样做呢?但我真的不知道为什么要有两个结构。

看起来像“模块”(或者“类”,如果你愿意的话)状态,用于维护一组单独链接的整数列表

当然,命名很糟糕,应该是

struct list_node {
  int myNum;
  struct list_node *next;
};

static struct {
  int theNum;
  struct list_node *lists;
} listState;
请注意,名称(“struct tag”)
bob_stuff
毫无意义且容易混淆,可能应该删除。如果您想要一个
静态
,即
结构
类型的局部变量,那么标记可能无论如何都不会有用。

这看起来像是“模块”(或“类”,如果您愿意的话)状态,用于维护一组单独链接的整数列表

当然,命名很糟糕,应该是

struct list_node {
  int myNum;
  struct list_node *next;
};

static struct {
  int theNum;
  struct list_node *lists;
} listState;

请注意,名称(“struct tag”)
bob_stuff
毫无意义且容易混淆,可能应该删除。如果您想要一个
静态
,即
结构
类型的局部变量,那么标记可能无论如何都不会有用。

我认为是结构的名称让您感到困惑

它是单链表的定义

第一结构

struct bob{
    int myNum;
    struct bob * next;
};
定义列表的一个节点。我会用不同的名字重写它

struct Node{
    int value;
    struct Node * next;
};
第二个结构简单地定义了列表的头和列表中的节点数(如我所说)

所以可以像这样重写

static struct SingleLinkedList{
    int nodes_count;
    struct Node *head;
} list;

这个抽象列表被用作一些Bob东西的容器。

我认为是结构的名称让你感到困惑

它是单链表的定义

第一结构

struct bob{
    int myNum;
    struct bob * next;
};
定义列表的一个节点。我会用不同的名字重写它

struct Node{
    int value;
    struct Node * next;
};
第二个结构简单地定义了列表的头和列表中的节点数(如我所说)

所以可以像这样重写

static struct SingleLinkedList{
    int nodes_count;
    struct Node *head;
} list;

此抽象列表用作某些Bob stuff的容器。

第二个结构不是类型
struct Bob
,而是类型
struct Bob\u stuff
。有一个非常重要的区别。虽然结构的成员是等价的,但这两个结构不能相互分配。我很确定
静态
只适用于变量
bob
,而不是
struct bob\u stuff
。静态成员只能从其文件访问,不能从其他文件访问,在这里,您不能从其他文件访问bob,但您可以访问struct bob_stuff和struct bob。这是个坏主意,声明和定义应该分开。那里的
static
适用于类型为
struct bob\u stuff
的实例
bob
。你从哪里得到这样的例子?这些都是很糟糕的例子,所以静态结构bob_实际上包含一个静态的bob结构列表,但是int myNum不是静态的?结构bob_stuff声明末尾的“bob”是怎么处理的?第二个结构不是类型
struct bob
,而是类型
struct bob_stuff
。有一个非常重要的区别。虽然结构的成员是等价的,但这两个结构不能相互分配。我很确定
静态
只适用于变量
bob
,而不是
struct bob\u stuff
。静态成员只能从其文件访问,不能从其他文件访问,在这里,您不能从其他文件访问bob,但您可以访问struct bob_stuff和struct bob。这是个坏主意,声明和定义应该分开。那里的
static
适用于类型为
struct bob\u stuff
的实例
bob
。你从哪里得到这样的例子?这些都是很糟糕的例子,所以静态结构bob_实际上包含一个静态的bob结构列表,但是int myNum不是静态的?结构bob_东西声明末尾的“bob”是怎么回事?谢谢,这就把它弄清楚了。myNum是静态的还是非静态的?我的猜测并不是因为list\u node结构的一部分不是静态的,即使它是listState变量中包含的列表的一部分。
struct list\u node
“is
static
”,这只是一个声明的类型。
listState
是一个静态变量,它包含一个指向该类型值的指针,这一事实并不会改变类型声明本身。多亏了它,它才得以清除。myNum是静态的还是非静态的?我的猜测并不是因为list\u node结构的一部分不是静态的,即使它是listState变量中包含的列表的一部分。
struct list\u node
“is
static
”,这只是一个声明的类型。
listState
是一个静态变量,它包含指向该类型值的指针,这一事实不会改变类型声明本身。