前言
数据结构没学好,重新看一遍,发现老师给的ppt的代码好像有点问题,虽然能运行,但是有报错。而且我没搞懂花括号前面和后面是不是都是命名,也没搞懂struct和typedef struct的区别。看了几篇文章,终于搞懂了,总结一下。
warning C4091: “typedef ”: 没有声明变量时忽略“node”的左侧
定义
struct 名称 {
// 成员
};
typedef struct 名称 {
// 成员
} 别名;
无typedef的声明方式
// 有名字的结构体
struct s1 {
int a;
};
// 匿名结构体
// S1是变量,不是变量类型,这种适合那种很简单的结构体或者仅仅使用一次的结构体
struct {
int a;
}S1;
// 有名字也有变量的结构体
// 跟第一种一样,只是声明结构体后立即创建变量S1
struct s1 {
int a;
}S1;
注意,花括号后面是变量,不是别名
有typedef的声明方式
// 有名字但没有别名的结构体 不存在这种
// vs2015中运行会忽略掉typedef
//typedef struct s2{
// int a;
//};
// 没有名字但有别名的结构体
// 带typedef的匿名结构体
typedef struct {
int a;
} S2;
// 有名字也有别名的结构体
typedef struct s3 {
int a;
} S3;
定义变量
// C/C++ 支持这些写法:
// 使用 struct + 名字定义
struct s1 v1;
struct s3 v3;
// 使用别名定义
S2 v2;
S3 v3;
// C++ 支持这些写法:
// 兼容 C 语言的写法
struct s1 v1;
struct s3 v3;
S2 v2;
S3 v3;
// C++ 允许省略 struct 关键字
s1 v1;
s3 v3;
有typedef的第三种结构体(有名字也有变量的结构体)
别名 == struct 名称
S3 == struct s3
访问成员
定义完变量后,直接
变量名.成员
S1.a=10;
v1.a=10;
参考文章
[1] https://bbs.csdn.net/topics/392188945
[2] https://www.cnblogs.com/ericwannn/p/10548186.html
[3] https://www.cnblogs.com/qyaizs/articles/2039101.html