偶然发现typedef在c和c++中是不一样的,在C中定义结构体必须要用到typedef,而在C++ 中定义结构体时用typedef和不用又有不同。
在C中,定义结构体是一定要用到typedef的,我们在C中定义一个简单的结构体:
typedef struct student
{
int Id;
char name[10];
}stu;
stu stu1;
stu1.Id=2;
printf("%d\n",stu1.Id);
在上面的代码中,stu是一种结构体类型,相当于struct student的别名,如果想访问变量Id或者name,必须用stu定义一个结构体变量stu1,通过stu1来访问Id或者name。
在C++中,定义结构体可以直接这么写:
struct student
{
int Id;
string name;
}stu;
stu.Id = 2;
cout << stu.Id << endl;
这样可以直接用stu访问结构体中的变量。
但是如果加了typedef的话,
typedef struct student
{
int Id;
string name;
}stu;
stu stu1;
stu1.Id = 2;
cout << stu1.Id << endl;
这个时候和C语言定义结构体就一样了,stu也是一种结构体类型,必须先用结构体类型定义一个变量,才能访问到结构体中的变量。
所以我们可以看到,在C++ 中简化了架构体的定义,可以不加typedef直接定义。