结构体的定义

作者&投稿:向芸 (若有异议请与网页底部的电邮联系)
~ 在实际问题中,一组数据往往具有不同的数据类型;例如在学生信息登记表中,姓名为字符型,学号为整型或字符型,年龄为整型,性别为字符型,成绩为整型或实型。因为数据类型不同,显然不能用一个数组来存放。

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。定义结构体的一般形式为:
struct 结构体名{
成员列表
};
每个成员都是结构体的组成部分,有名字,也有数据类型,形式为:
类型说明符 成员名;
例如用结构体来表示学生信息:
struct stu{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //成绩
};
结构体是一种构造数据类型(也称复杂数据类型),由若干不同类型的变量(数据)组成。每个变量都是结构体的成员(member),每个成员可以是基本数据类型,也可以是构造类型。相应的,int、char、float 这些数据类型被称为基本数据类型。上面的代码定义了一个结构体,名字为stu。stu由4个成员组成,分别为 name、num、sex、score。

注意大括号后面的分号;不能少。
结构体变量
结构体也是一种数据类型,可以用来说明变量。例如:struct stu stu1, stu2;定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 4 个成员组成。注意关键字struct不能少。

stu 就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。

结构体的各个成员在内存中是连续存储的。stu1、stu2 的内存如下图所示:

你也可以在定义结构体的同时定义结构体变量:
struct stu{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //成绩
} stu1, stu2;
将变量放在结构体定义的最后即可。

如果只需要 stu1、stu2 两个变量,也可以不写结构体名字:
struct{ //没有写 stu
char *name; //姓名
int num; //学号
char sex; //性别
float score; //成绩
} stu1, stu2;
这样做书写简单,但是因为没有结构体名,后面就没法用该结构体定义新的变量。

也可以用宏定义使一个符号常量来表示一个结构类型,例如:
#define STU struct stu
STU{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //成绩
};
STU stu1, stu2;
后面我们会学习Windows编程,大部分结构体都是这样定义的。

成员的获取和赋值
在C语言中,使用点号.来获取结构体中的一个成员,一般格式为:
结构变量名.成员名
例如:
stu1.name; //第一个学生的姓名
stu2.score; //第二个学生的成绩
获取成员后,就可以对该成员进行赋值了,例如:
stu1.name = "Tom";
stu2.score = 90.5;
除了可以对成员进行逐一赋值,也可以像数组一样整体赋值,例如:
struct stu{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //成绩
} stu1, stu2 = { "Tom", 10, 'M', 90 };
不过整体赋值仅限于上面这样的情况,也就是定义结构体的同时声明变量。下面的写法是错误的:stu2 = { "Tom", 10, 'M', 90 };
一个完整的示例:
#include
#define STU struct stu
int main(){
STU{
char *name; //姓名
int num; //学号
char sex; //性别
float score; //成绩
};
STU stu1;
stu1.name = "James Bond";
stu1.num = 1;
stu1.sex = 'M'; //用M表示男性,W表示女性
stu1.score = 99;
printf("Hello everyone! My name is %s, a naughty boy, but with good scores(%.2f) and top No.(%d)!", stu1.name, stu1.score, stu1.num);

return 0;
}
运行结果:
Hello everyone! My name is James Bond, a naughty boy, but with good scores(99.00) and top No.(1)!


结构体的定义和用法是什么意思?
语言中,结构体(struct)是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。定义与声明 结构体的...

结构体的定义
1、结构体是由一系列具有相同类型或不同类型的数据构成的数据,叫做结构。2、在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的,这些元素称为结构体的成员,且这些成员可以为不同的类型...

什么是同分异构体?
同分异构体:定义化学上,同分异构体是一种有相同分子式而有不同的原子排列的化合物。简单地说,化合物具有相同分子式,但具有不同结构的现象,叫做同分异构现象;具有相同分子式而结构不同的化合物互为同分异构体。很多同分异构体有相似的性质。有机化学中,同分异构体可以是同类物质(含有相同的官...

c语言中如何定义一个结构体
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而...

同分异构体的定义
同分异构体又称同分异构物。在化学中,是指有着相同分子式的分子,各原子间的化学键也常常是相同的;但是原子的排列却是不同的。也就是说,它们有着不同的“结构式”。许多同分异构体有着相同或相似的化学性质,但如果是官能团异构的同分异构体(即官能团不同),那么化学性质不同,因为有机物的...

同分异构体的基本概念
同分异构体的基本概念:化学上,同分异构体是一种有相同分子式而有不同的原子排列的化合物。简单地说,化合物具有相同分子式,但具有不同结构的现象,叫做同分异构现象;具有相同分子式而结构不同的化合物互为同分异构体。很多同分异构体有相似的性质。有机化学中,同分异构体可以是同类物质(含有...

同分异构体与同素异形体有什么区别?
一、定义不同 1、同分异构体是一种有相同分子式而有不同的原子排列的化合物。简单地说,化合物具有相同分子式,但具有不同结构的现象,叫做同分异构现象;具有相同分子式而结构不同的化合物互为同分异构体。很多同分异构体有相似的性质。有机化学中,同分异构体可以是同类物质(含有相同的官能团),...

C语言中,&结构体是什么操作呢
struct 结构体名{ 成员列表;};1 2 3 结构体里面的成员定义方式与变量相同,也就是在结构体里面定义了多个变量。例如,定义一个学生的结构体:struct Student { char name[32]; \/\/姓名 int age; \/\/年龄 float score; \/\/成绩 };1 2 3 4 5 2.2 定义结构体变量 struct Stude...

对映异构体的定义是什么?
一个化合物有很多手性中心,所有手性中心构型变相反,叫对映体。并不是所有手性中心构型变相反的叫非对映体。(R,R)和(S,S)是对映体,(R,R)和(R,S)是非对映体。非对映异构体 :构造相同, 构型不同, 相互间不是实物与镜影关系的立体异构体。对映异构体:相互间是实物与镜影关系 ...

同位素,同素异形体,同分异构体,同系物具体有什么区别???
(1)同位素:质子数相同,中子数不同的原子 ( 核素 )(2)同素异形体:由同一种元素组成的不同单质 (3)同分异构体:分子式相同,结构不同的化合物 (4)同系物:结构相似,分子组成相差一个或若干个 CH2 基团的物质 3、化学式不同。元素符号表示不同,如元素符号表示相同,分子式可以不同。4...

宁都县19543491957: 结构体(数据集合) - 搜狗百科
融生优普: 注意这里 a,b 不是结构体变量,楼上的说错了 因为前面有个typedef,是用来去别名的1.是正常的定义结构体 a2.是给结构体 a 取了一个别名 b;3.是给结构体定义了一个这种结构体的指针 b;这里的a就多余了,一般取一个和结构体不一样的名字,比如你的小名当然不和主名一样了,不过一样也不会错 typedef struct a {char input; a *p_input; }*b; 这个和我们以前定义 typedef int *Elemtype 其实是同一个道理

宁都县19543491957: 结构体的C语言中的结构体 -
融生优普: 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成...

宁都县19543491957: 哪位大侠能够给我讲解一下C语言的结构体定义和调用!~!!!! -
融生优普: 结构体就是把一些属性定义放在一起定义,如:typedef struct A { int c; int b; ...}; 这样如果在程序中使用c就可以用A来定义一个变量如 A a,这样a就有了c,b的属性(好像说属性不太专业~~).想调用就可以在程序中使用a.c了,如a.c = 3;

宁都县19543491957: 数据结构结构体定义 -
融生优普: 这个你先要明白typedef 这个关键字的作用: typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 所以 第一个实际上完成了两件事 1: 定义...

宁都县19543491957: C语言的结构体类型是什么数据?数据有哪些类型? -
融生优普: 结构体类型就是以struct关键字定义的数据类型. 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构.是一种聚合类型,里面可以包含多种数据类型,甚至可以结构体里嵌套结构体.相信我,等你深入理解了...

宁都县19543491957: 数据结构中结构体定义的问题,请高手解答,不甚感激?
融生优普: 不才,也来看看. elem是int*类型,所有出现elemtype的地方都可以替换成int.指针可以像数组一样使用,前提是必须分配存储空间(指针是手动分配,数组是系统分配).在scanf位置会出错,因为没有为elem分配空间.在c中用elem=(int*)malloc(20); 关于结构体,你可以把他当做常用类型,和普通的int灯类型一样处理. sqlist s; s.elem=(int*)malloc(20); .....

宁都县19543491957: C语言 结构体 怎么定义 使用 举个例子 看看 -
融生优普: struct a { int m; char f[20];....} 这就是结构体,定义一般放在头文件的开头!

宁都县19543491957: C++中的结构体struct定义 -
融生优普: 这里dwValue1:31,表示占32个bit中的31位,而dwValue2:1,表示占32个bit中的最低位bit.这样这两个成员变量总共只占一个双字节32bit.这样写的往往用来网络字节编程中,比如IP/TCP等的包头的字段定义,可以节省字节.比如IP包头的版本就只占几个bit,就是这样写的.

宁都县19543491957: c++结构体的定义和使用 -
融生优普: typedef struct _point{int x;int y;}point; //定义结构体int main(){ //使用结构体point pt1;pt1.x = 1;pt1.y =2;cout<< "ptpt1.x=" << pt1.x << "pt.y=" << }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网