结构体是类似于名片形式的数据集合体,可以把它理解为一种由用户自定义的特殊的复合型的“数据类型”,在这个复合型的“数据类型”中可以包含多种基本数据类型,我们可以把它作为一个整体来操作。
成都创新互联专注于磐安企业网站建设,成都响应式网站建设公司,商城网站定制开发。磐安网站建设公司,为磐安等地区提供建站服务。全流程按需搭建网站,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
在C语言中,结构体(struct)指的是一种数据结构,是C语言中复合数据类型(aggregate data type)的一类。
结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
结构体的定义如下所示:
struct tag { member-list } variable-list;
其中:
struct为结构体关键字; tag为结构体的标志; member-list为结构体成员列表,其必须列出其所有成员; variable-list为此结构体声明的变量。 在一般情况下:tag、member-list、variable-list这3部分至少要出现2个。
不同的定义,应用在不同场景,所以,我们编程时需要结合实际情况来定义结构体。
定义结构体stu,此时结构体相当于一个类型,比如int,如需使用此结构体,方法同int.
struct stu
{
char aa;
short bb;
int cc;
};
struct stu stu1, stu2;
定义结构体stu同时定义需要使用的结构体变量stu1, stu2。如后面再需要定义结构体变量,方法同1.
struct stu
{
char aa;
short bb;
int cc;
}stu1, stu2;
struct stu stu3;
定义结构体时,结构体名称缺省,同时定义结构体变量stu1,stu2。但后面不可再定义结构体变量。
struct
{
char aa;
short bb;
int cc;
}stu1, stu2;
这里不能像上面再定义结构体变量:(以下错误)
struct stu3;
struct stu stu3;
这里先简单说下typedef。
在C和C++编程语言中,typedef是一个关键字。它用来对一个数据类型取一个别名,目的是为了使源代码更易于阅读和理解。它通常用于简化声明复杂的类型组成的结构 ,但它也常常在各种长度的整数数据类型中看到,例如size_t和time_t。 维基百科
使用typedef定义结构体同时,给stu结构体别名STU,后续定义可不用使用struct stu,直接使用STU即可。
typedef struct stu
{
char aa;
short bb;
int cc;
}STU;
STU stu1;
你会发现,其实就是通过关键字typedef,将STU取代了struct stu。
当然,也可以这么用:
struct stu stu1;
上面这种定义就失去了typedef的意思,所以不推荐。
使用typedef定义结构体时,省掉结构体第一个别名stu,直接在后面加STU,使用方法同上。
typedef struct
{
char aa;
short bb;
int cc;
}STU;
STU stu1;
还有一种符合语法规则,但意义不大的定义方式。
typedef struct stu
{
char aa;
short bb;
int cc;
};
struct stu stu1;
以上这些定义方式算是语法的知识,如果还不懂,请再次复习一下。
结构体的大小,我相信很多人都没搞明白。实际编程中也是很多地方都在应用,比如:存储、拷贝结构体时都会牵涉到结构体大小的问题。
结构体1:
struct stu
{
char aa;
short bb;
char cc;
}stu1;
结构体2:
struct stu
{
char aa;
char bb;
short cc;
}stu2;
答案是不一样。程序测试得出sizeof(stu1)=6, sizeof(stu2)=4.
结构体计算要遵循字节对齐原则,一般满足三个准则:
结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节; 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节; 对于上面结构体stu1来说,最大字节:2字节,顺序是 char->short->char:
对于上面结构体stu2来说,最大字节:2字节,顺序是 char->char->short:
通过上面两个表格,相信你应该明白了,改成4字节的int,原理一样。
最后,强调一下,学习编程,不能只看书,要多敲代码。
文章名称:C语言结构体使用注意事项
标题URL:http://www.shufengxianlan.com/qtweb/news34/218184.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联