当我制作自己的结构时,请说:
struct myStruct{
int data1;
int data2;
string data3;
}
我可以像这样初始化myStruct类型的实例:
myStruct instance1;
所以我的问题是,为什么我经常在结构初始化期间看到“struct”? 也许这是一个不准确的陈述,所以这里是我的意思的一个例子:
/*This is a tiny program that checks
to see if a file exists in
the current working directory. */
#include <sys/stat.h>
#include <iostream>
using namespace std;
const string FILENAME = data.txt;
int main(){
struct stat fileStatus; //<-- HERE HERE HERE!
if (FileExists(FILENAME, fileStatus)){
cout << "File Does Exist" << endl;
}else{
cout << "File Does NOT Exist" << endl;
}
return 0;
}
bool FileExists(const string & fileName,struct stat & fileStatus){
bool fileDoesNotExist = stat (fileName.c_str(), &fileStatus);
return !fileDoesNotExist;
}
&GT; 第13行:struct stat fileStatus;
这是出于某种原因在C中完成的事情吗?
有宏或typedef的东西吗?
我只是不明白为什么会这样。
答案 0 :(得分:6)
这是一件C事;在C ++中没有充分的理由继续这样做。 1
在C中,struct
是typename的一部分,例如:
struct foo { int x; };
定义了一个名为struct foo
的类型。在C ++中,它定义了一个名为foo
的类型。在C中,你通常可以在typedef后隐藏这种烦恼:
typedef struct foo { int x; } foo;
<小时/> 1 至少,在代码中不能编译为C(例如你问题中的例子)。
答案 1 :(得分:-3)
您可以按照以下方式执行操作:
typedef struct mystruct
{
int itema;
int itemb;
Etc...
}* mystruct;
因此,只要你创建一个mystruct项,它就会创建一个指向你的struct的指针,否则你必须通过
来调用你的struct。struct mystruct * object;