对这段代码中struct的工作原理感到困惑

时间:2015-02-23 15:47:59

标签: c++ c struct stat

我正在查看我要使用的代码here

#include <sys/stat.h>

struct stat sb;

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

我想如果我要使用它,我应该理解它的作用。我的问题是关于这一行

struct stat sb;

这是什么意思?我知道struct就像宣布它一样

struct node { int val; node * next; }

所以我很困惑为什么在struct声明之后有2个令牌。

2 个答案:

答案 0 :(得分:2)

在C中,struct不会自动成为typename,因此您必须使用struct foo引用struct name。同样,您需要使用enum barunion baz。人们经常使用typedef来避免在声明实例时键入struct

在C ++中,该关键字是可选的,因为结构,枚举和联合(加上类)是类型,但您仍然可以编写class std::string s = "abc";。关于stat,有一个结构和一个具有该名称的函数,为了消除两者之间的歧义,你需要在引用结构时写struct stat

答案 1 :(得分:0)

struct node { int val; node * next; }

是你可以称之为“struct stat”类型的定义 此

struct stat sb;

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