c语言的structure
⑴ struct在c语言中是什么意思
在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。
结构体的定义形式为:
struct结构体名{
结构体所包含的变量或数组
};
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。
例子:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
stu为结构体名,它包含了5个成员,分别是name、num、age、group、score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。
(1)c语言的structure扩展阅读
结构体变量——
既然结构体是一种数据类型,那么就可以用它来定义变量。
例如:
struct stu stu1, stu2;
定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。注意关键字struct不能少。
stu 就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。
⑵ C语言中struct是个什么意思 怎么用 能不能通俗点说
结构(struct)
结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。
结构中可以使用不同的数据类型。
结构说明和结构变量定义
在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。定义结构变量的一般格式为:
struct 结构名
{
类型 变量名;
类型 变量名;
...
} 结构变量;
结构名是结构的标识符不是变量名。 类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和 无值型)。
构成结构的每一个类型变量称为结构成员, 它象数组的元素一样, 但数组中 元素是以下标来访问的, 而结构是按变量名字来访问成员的。 下面举一个例子来说明怎样定义结构变量。
struct string
{
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
} person;
这个例子定义了一个结构名为string的结构变量person, 如果省略变量名 person, 则变成对结构的说明。用已说明的结构名也可定义结构变量。这样定义 时上例变成:
struct string
{
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
}; struct string person;
如果需要定义多个具有相同形式的结构变量时用这种方法比较方便, 它先作 结构说明, 再用结构名来定义变量。
如果省略结构名, 则称之为无名结构, 这种情况常常出现在函数内部, 用这 种结构时前面的例子变成:
struct
{
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
} Tianyr, Liuqi;
结构作为一种数据类型, 因此定义的结构变量或结构指针变量同样有局 部变量和全程变量, 视定义的位置而定。
结构变量名不是指向该结构的地址, 这与数组名的含义不同, 因此若需要求结构中第一个成员的首地址应该是&[结构变量名]。
(2)c语言的structure扩展阅读:
结构体变量可进行哪些运算
结构体变量不能相加、不能相减,也不能相互乘除,但结构体变量可以相互赋值。也就是说,可以将一个结构体变量赋给另一个结构体变量。但前提是这两个结构体变量的结构体类型必须相同。
结构体变量的引用方式决定了:
“结构体变量名”可以与“结构体成员名”同名。
“结构体变量名”可以与“结构体名”同名。
“两个结构体类型定义的结构体变量中的成员可以同名”。
就比如定义了一个结构体类型用于存放学生的信息,里面有成员“char name[20];”,那么如果又定义了一个结构体类型用于存放老师的信息,那么里面也可以有成员“char name[20];”
因为结构体成员在引用时,必须要使用“结构体变量名.成员名”的方式来引用,通过引用就可以区分它们,所以不会产生冲突,因此可以同名!
只要不冲突,都可以重名!但是两个结构体变量名就不可以重名了,因为无法区分它们,就会产生冲突。当然这里说的是在同一个作用域内,如果在一个函数中定义一个局部变量a,那么在另一个函数中当然也可以定义一个局部变量a。它们互不影响。
⑶ C语言结构体定义
C语言结构体定义:struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
结构体是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
(3)c语言的structure扩展阅读
1、struct是声明结构体类型时必须使用的关键字,不能省略。“结构体”这个词是根据英文单词structure译出的。
2、structSTUDENT是定义的数据类型的名字,它向编译系统声明这是一个“结构体类型”,包括name、num、sex、age、score、addr等不同类型的项。
3、structSTUDENT与系统提供的int、char、float、double等标准类型名一样,都是数据类型,具有同样的作用,都是用来定义变量的。
⑷ 请教C语言中struct的用法
在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:
struct 结构体名{
结构体所包含的变量或数组
};
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。
结构体定义:
第一种:只有结构体定义
struct stuff{
char job[20];
int age;
float height;
};
第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义
//直接带变量名Huqinwei
struct stuff{
char job[20];
int age;
float height;
}Huqinwei;
也许初期看不习惯容易困惑,其实这就相当于:
struct stuff{
char job[20];
int age;
float height;
};
struct stuff Huqinwei;
第三种:如果该结构体只用一个变量Huqinwei,而不再需要用struct stuff yourname;去定义第二个变量。
那么,附加变量初始化的结构体定义还可进一步简化出第三种:
struct{
char job[20];
int age;
float height;
}Huqinwei;
把结构体名称去掉,这样更简洁,不过也不能定义其他同结构体变量了——至少我现在没掌握这种方法。
结构体变量及其内部成员变量的定义及访问。
要分清结构体变量和结构体内部成员变量的概念。
就像刚才的第二种提到的,结构体变量的声明可以用:
struct stuff yourname;
其成员变量的定义可以随声明进行: struct stuff Huqinwei = {"manager",30,185};
也可以考虑结构体之间的赋值:
struct stuff faker = Huqinwei;
//或 struct stuff faker2;
// faker2 = faker;
打印,可见结构体的每一个成员变量一模一样
如果不使用上边两种方法,那么成员数组的操作会稍微麻烦(用for循环可能好点)
Huqinwei.job[0] = 'M';
Huqinwei.job[1] = 'a';
Huqinwei.age = 27;
Huqinwei.height = 185;
结构体成员变量的访问除了可以借助符号".",还可以用"->"访问。
(4)c语言的structure扩展阅读:
结构体数组与结构体指针:
一个结构体变量中可以存放一组数据;如一个学生的学号、姓名、成绩等数据。如果有10个学生的数据需要参加运算显然应该用数组,这就是结构体数组结构体数组与以前介绍过的数值型数组不同之处:每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员(分量)项。
结构体指针和其他类型的指针都是一样的理解,在32位平台不管啥类型的指针都占4个字节的空间。
结构体指针就是指向结构体变量的指针;如果一个指针变量中保存了结构体变量的首地址,那么这个指针变量就指向该结构体变量.通过结构体指针即可访问该结构体变量,这与数组指针和函数指针的情况是相同的结构指针变量说明的一般形式为:
struct 结构体名 *结构体指针变量名struct student *p = &Boy; //假设事先定义了 struct student Boy。
⑸ 关于C语言中的结构体
如果在结构体定义时,或定义后取了别名,可以用别名,否则不能省“struct”
如:typedef struct Teacher TEACHER;
则可以用TEACHER 代替struct Teacher
C语言的结构体没有存取控制权限,相当于C++存取控制权限中的public:
追问:
那struct Teacher *creat(struct Teacher *head);
和Teacher *creat(struct Teacher *head);
一样吗?如果不一样的话有什么区别呢?
追答:
是一样的,struct Teacher 和Teacher只是同一东西的两种不同写法。
⑹ C语言的结构体和共同体的区别是什么
结构体(structure)是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型,而且每个成员的数据类型可以相同也可以不相同。共同体(union)将几种不同的变量储存在同一内存单元中,也就是使用覆盖技术,几个变量互相覆盖,这种几个不同的变量共同占用一段内存的结构,可见二者最大的区别就是所占用的内存,结构体(structure)所占用的内存是分量内存之和,共同体(union)所占用的内存是等于最大的分量的内存。
具体来说,结构体(structure)与共同体(union)主要有以下区别:
1.结构体(structure)与共同体(union)都是由多个不同的数据类型成员组成,
但在任何同一时刻,
共同体(union)中只存放了一个被选中的成员,
而结构体(structure)的所有成员都存在。在结构体(structure)中,各成员都占有自己的内存空间,它们是同时存在的。一个结构体(structure)变量的总长度等于所有成员长度之和。在共同体(union)中,所有成员不能同时占用它的内存空间,它们不能同时存在。共同体(union)变量的长度等于最长的成员的长度。
2.
对于共同体(union)的不同成员赋值,
将会对其它成员重写,
原来成员的值就不存在了,
而对于结构体(structure)的不同成员赋值是互不影响的。
⑺ c语言struct是什么意思
struct是C语言结构体类型的标识符。
结构体支持把一组变量整合起来形成一个大的变量,其定义形式为:
struct name{
type1 var1;
type2 var2;
...
typen varn;
};
定义中的varx称为结构体的成员变量,可以为任意变量形式。当定义这样的结构体后,struct name就成为一种自定义类型。
于是
struct student就是被命名为student的一个结构体类型名。
⑻ C语言结构体Struct怎么使用
在Turbo C中,结构也是一种数据类型, 可以使用结构变量,因此,像其它类型的变量一样,在使用结构变量时要先对其定义。
如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。
(8)c语言的structure扩展阅读
指向结构体的指针是一个一直都没有掌握好的点,希望这里能记录好一点,加强理解。
对于指针有几个好处,
第一:就像指向数组的指针比数组本身更容易操作一样,指向结构的指针通常也更容易操作;
第二:在早期的C中参数传递只能使用结构的指针;
第三:很多奇妙的数据表示都是用了包含指向其他结构的指针的结构。
和数组不同,结构的名字不是该结构的地址(即单独的结构名并不是该结构地址的同义词),必须使用 & 运算符。
参考资料c语言结构体struct相关使用说明
⑼ c语言结构体
data是你定义的一个结构类型(类似于int),DT是一个data的变量(类似于int i)。p是一个指针,用于指向一个data变量。
data的定义常见于单链表的节点结构,包含数据和指针两部分内容。数据当然是用来保存数据的,而指针用于把一个一个的节点串起来,在逻辑上形成一个链表
⑽ C语言 structure& array
应该是遍历所有的allData条目,每发现一个条目的year == yearWant, 就把它放到yearData的尾部。
假设allData的长度是L,大概长这样:
inttail=0,i;
for(i=0;i<L;i++)
if(allData[i].year==yearWant)
yearData[tail++]=allData[i];