关于c ++:对这段代码中struct的工作原理感到困惑

Confused about how struct works in this piece of code

我在这里看了一段我要用的代码:

1
2
3
4
5
6
7
8
#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISDIR(sb.st_mode))
{
    ...it is a directory...
}

我想,如果我要使用它,我可能应该理解它的作用。我的问题是关于这条线

1
struct stat sb;

那是什么意思?我知道struct的意思是说

1
struct node { int val; node * next; }

所以我很困惑为什么在结构声明之后有2个标记。


在C语言中,结构不是自动的类型名,因此您必须使用struct foo来引用结构名。同样,您需要使用enum barunion baz。人们通常使用typedef来避免在声明实例时键入struct

在C++中,关键字是可选的,因为结构、枚举和联合(加类)是类型的,但是仍然可以写入EDCOX1 OR 5。关于stat,既有一个结构,也有一个函数有这个名称,为了消除二者之间的歧义,在引用该结构时需要编写struct stat


1
struct node { int val; node * next; }

可以称为"struct stat"类型的定义这

1
struct stat sb;

只需创建该类型的结构(该结构已在其他地方定义)例如,在stat.h中;-)