(C/C++)结构初始化语法
(C/C++) struct initalization syntax
当我制作自己的结构时,说:
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;
}
>第13行:结构体stat fileStatus;
这是出于某种原因在C中执行的操作吗
有宏或typedef的东西
我只是不明白为什么会这样。
这是一个C的东西;没有充分的理由继续在C++中这样做1
在C中,struct
是类型名称的一部分,例如:
struct foo { int x; };
定义了一个称为CCD_ 2的类型。在C++中,它定义了一个名为foo
的类型。在C语言中,你通常可以将这种愤怒隐藏在typedef:后面
typedef struct foo { int x; } foo;
1至少,不在不可能也编译为C的代码中(比如你问题中的例子)。
您可以按如下方式调用它:
typedef struct mystruct
{
int itema;
int itemb;
Etc...
}* mystruct;
因此,每当你创建一个mystruct项时,它都会创建一个指向你的结构的指针,否则你必须通过调用你的结构
struct-mystruct*对象;
相关文章:
- 多成员Constexpr结构初始化
- 为什么用结构初始化数组需要指定结构名称
- 使用指定的初始值设定项聚合匿名结构初始化
- 不同的类或结构初始化方法之间的性能差异是什么?
- 如何在结构初始化中获取成员C++
- C++正确的结构初始化
- 使用大括号进行结构初始化
- 内部结构初始化不起作用 - C++
- 使用嵌套结构初始化并集
- 使用匿名结构初始化联合
- 结构初始化语法
- 结构初始化的 C++ 向量
- C++嵌套结构初始化和访问成员
- 结构初始化中的常量正确性
- 使用 C++ 中的自定义元素进行 Const 结构初始化
- 如何在结构C++初始化内置数组
- Visual C++ 模板类成员结构初始化语法糖
- C++结构初始化
- C 在结构初始化过程中带有内部阵列的奇怪错误
- 此C/C 的结构初始化器如何使用足够的字段工作