struct和typedef struct
定义结构体
struct Tag //Tag是结构体标签,名字由自己起
{
member1;
member2;
..... //member是结构体成员
}var; //结构变量,可以声明多个
Tag,member,var三者之间至少出现两个
//1
struct
{
member;
....
}var;
//2
struct Tag
{
member;
.....
};
//3
struct Tag var;
#include<bits/stdc++.h>//c++万能头文件,有些编译器无法识别
using namespace std;
struct student
{
int num;
};
int main()
{
struct student stu; //声明一个叫stu的变量,struct student和int, string的意思是一样的
stu.num = 10; //访问结构体中的成员,并赋值10
cout<<stu.num;
}
//struct student
//{
// int num;
//} stu; //是一个变量
//
//int main()
//{
// stu.num = 10; //此时stu就相当于struct student stu;
// cout<<stu.num<<endl;
//}
//typedef struct student
//{
// int num;
//}stu; //此时的stu = struct student,就是说stu是结构体类型的别名,方便定义结构体变量
//
//int main()
//{
// //stu.num = 10; //错误,此处stu表示的是结构体类型,并非一个变量
// stu stu1; //正确,声明一个结构体变量
// stu1.num = 20;
// cout<<stu1.num<<endl;
// //cout<<stu.num<<" "<<stu1.num;
//}
总结:没有加typedef时,结构体分号前的名称是一个结构体变量,可以直接调用结构体内成员变量,加上typedef后,则是一个结构体类型,类似于int,string,需要声明变量后才能调用结构体内的成员变量
以上只是个人的一点理解,如有错误与不妥还请及时指出,以免误导大家