C的结构体
难度 1/5 技巧0/5 -适合入门
很多人大学里面就是学C开始的,结构体的基本概念也是由
typedef struct name
{
}structname;
这样的形式来表现的。其实C++的结构体和C的结构体意义上是有很大区别的,C++有类的概念,而C是结构化。两种是不同的,无论是从使用技巧或者灵活性来说,请区别好。当然你一开始学习发现两者很相似,确实用法很相似,内存排布也很相似。我们只能用相似来形容,而不能说一样。
以后几篇文章会说出C语言结构体 C++结构体,具体有什么不同。
这篇文章主要是C的结构体
结构体有这么几点要学习和掌握的。并不是没用,在某些场合还是很有用处的。
1、结构体的命名(风格、规范)
2、结构体的指针(入门)
3、结构体里面的联合体(入门)
4、结构体的大小(十分重要,工作会用到)
5、结构体的对齐(十分重要,工作会用到)
一、结构体的命名
这个书上写的很清楚,也是我们一开始入门要学的
typedef struct name
{
}structname;
在windows编程上面我们通常会看到:
typedef struct
{
}STRUCTNAME,*LPSTRUCTNAME;
注意后面的是*(指针类型)。我们看到的LP就是说明是指针的。
我本人的命名规则,在前面加一个S以区别其他的类型
typedef Sstruct name
{
}SSTRUCTNAME
二、结构体的指针
typedef struct name
{
Int a;
Int b;
}Structname;
Structname temple; //简单的声明结构体
Structname *s = *temple; //取指针
s->a = 1;
s->b = 2;
这样,我们就可以修改获取s指针所指向的a,b成员的值。最简单的结构体使用。
三、结构体里面的联合体
给出我们群的文章
《宏、常量、枚举、结构体和共用体对比分析之共用体》——作者:dx
四、结构体的大小
关于结构体的大小,百度以后会有一大堆,这里就不再熬述了。
给出我们群的文章
《关于结构体内存分配对齐深入理解》——作者:小峰峰
五、结构体的对齐(十分重要)
关于对齐也是又很多资料可以查
给出我们群的文章
《关于成员对齐方式》——作者Stromshadow