c++语言基本结构,c语言结构体笔记
整数、字符、布尔值、浮点数等数据类型都是单值的,可以称为基本数据类型。但是字符串是个例外。它由许多字符组成。像这样由基本类型组成的数据类型称为复合数据类型。就像表达式和语句有组合规则一样,基本类型组成的复合类型也有一些组合规则。
在实际问题中,一组数据往往有不同的数据类型。例如,在学生登记表中,姓名应该是字符型;学号可以是整数或字符类型;年龄应为整数;性别应为字符型;分数可以是整数也可以是实数。显然你不能用数组来存储这组数据。因为数组中所有元素的类型和长度必须一致,所以编译器系统很容易处理它们。为了解决这个问题,在C语言中给出了另一种构造数据类型——“结构”或“结构”。它相当于其他高级语言中的记录。
“结构”是一种建筑类型,由若干“构件”组成。每个成员都可以是基本数据类型或构造类型。结构是一种“构造”的数据类型,所以必须先定义,才能解释和使用,也就是构造。就像在解释和调用一个函数之前定义它一样。
定义结构的一般形式是:
Struct结构名称{成员表列};
成员列表由几个成员组成,每个成员都是结构的一部分。每个成员还必须进行类型描述,形式为:
类型说明符成员名称;
成员的命名应该符合标识符的书写规则。例如:
struct stu { int numchar name[40];迷人的性爱;浮动分数;};
在这个结构定义中,该结构被命名为stu,它由四个成员组成。第一个成员是num,一个整数变量;第二个成员是name,一个字符数组;第三个成员是性别,一个性格变量;第四个成员是score,一个实变量。注意,括号后面的分号是必不可少的。定义了结构之后,就可以解释变量了。所有被描述为结构stu的变量都由上述四个成员组成。因此,该结构是一个复杂的数据类型,是一组具有固定数量和不同类型的有序变量。
有三种方法可以解释结构变量。以上面定义的stu为例来说明。
1.先定义结构,再解释结构变量。
比如:
struct stu { int numchar name[40];迷人的性爱;浮动分数;};struct stu boy1,boy2
两个变量boy1和boy2是stu结构类型。
你也可以使用宏定义来创建一个符号常量来表示一个结构类型。例如:
# define STU struct STU { int num;char name[40];迷人的性爱;浮动分数;};斯图男孩1,男孩2;
2.在定义结构类型时解释结构变量。
例如:
struct stu { int numchar name[40];迷人的性爱;浮动分数;}boy1,boy2
这种解释形式的一般形式是:
Struct结构名称{成员表列}变量名表列;
3)直接解释结构变量。
例如:
struct { int numchar name[40];迷人的性爱;浮动分数;}boy1,boy2
这种解释形式的一般形式是:
Struct{成员表列}变量名表列;
第三种方法和第二种方法的区别在于,第三种方法省略了结构名,直接给出了结构变量。三种方法中描述的boy1和boy2变量的结构如下图所示。
在解释了boy1和boy2变量是stu类型之后,这两个变量的每个成员都可以被赋值。在上面stu结构的定义中,所有成员都是基本数据类型或者数组类型。成员也可以是结构,即嵌套结构。例如,下图显示了另一种数据结构。
根据该图,可以给出以下结构定义:
结构日期{ int monthint日;int年;};struct { int numchar name[40];迷人的性爱;结构日期生日;浮动分数;}boy1,boy2
首先定义一个结构日期,它由三个成员组成:月(month)、日(day)和年(year)。当定义和描述变量boy1和boy2时,它们的成员生日被描述为数据结构类型。成员名可以与程序中的其他变量同名,而不会互相干扰。
当程序中使用结构变量时,它们通常不是作为一个整体使用的。在ANSI C中,除了允许同类型的结构变量相互赋值之外,结构变量的使用,包括赋值、输入、输出、运算等。一般是由结构变量的成员来实现的。
结构可变成员的一般形式是:
结构变量名。成员名称
例如:
Boy1.num /*第一个人的学号*/boy2.sex /*第二个人的性别*/
如果成员本身是一个结构,那么必须一步一步地找到最低级别的成员才能使用。例如:
男孩1 .生日.月份
即第一个人出生的月份的成员可以在程序中单独使用,和普通变量完全一样。
结构变量的赋值就是给成员赋值。它可以通过输入语句或赋值语句来完成。
例如,下面的示例是为结构变量赋值并输出其值。
# include stdio . h struct stu { int num;char * name迷人的性爱;浮动分数;}boy1,boy2int main(void){ boy 1 . num=100;boy1.name=张三;Printf(请输入性别和分数:\ n );scanf(%c,%f ,boy1.sex,boy 1 . score);男孩2=男孩1;Printf(学生ID:% d \ n姓名:%s\n ,boy2.num,boy 2 . name);Printf (gender:% c \ nScore: %f\n ,boy2.sex,boy 2 . score);系统(“暂停”);返回0;}运行结果:
在这个程序中,赋值语句用来给两个成员赋值,num和name,name是一个字符串指针变量。使用scanf函数动态输入性别和分数成员的值,然后整体给出boy1到boy2所有成员的值。最后分别输出boy2的每个成员值。这个例子展示了结构变量的赋值、输入和输出的方法。
像其他类型的变量一样,结构的每个成员都可以被赋予一个初始值,这被称为结构的初始化。一种是定义结构变量时的初始化,语法格式如下:
Struct结构名称变量名={初始数据表};
另一个是在定义结构类型时初始化结构变量。
结构名称{成员列表;}变量名={初始数据表};
解释
结构和结构变量在概念上是不同的。
类型:未分配内存;变量:分配内存
类型:不能被赋值、访问或操作。变量:是
结构变量中的成员可以单独使用,比如普通变量;
结构可以嵌套
成员名可以与程序中的变量名相同。
像其他类型的变量一样,结构变量在定义时可以被初始化和赋值。
注意:
1.不能整体引用结构类型变量,只能分别引用结构类型变量的每个成员。
2.如果成员本身属于一个结构类型,就需要使用几个成员运算符逐级查找最低级别的成员。只有最低级别的成员才能被分配或访问和操作。
3.可以像普通变量一样对成员变量执行各种操作(可以执行的操作是根据其类型决定的)。
4.在数组中,数组不能互相赋值,而结构类型变量可以互相赋值。在C程序中,相同结构类型的结构变量允许相互赋值,但不同结构类型的结构变量不允许相互赋值,即使它们包含相同的成员。
下面的示例初始化一个结构变量。
# include stdio . h struct stu { int num;char * name迷人的性爱;浮动分数;}boy1,boy2={ 100,张三, M ,100 };int main(void){ boy 1=boy 2;Printf(学生ID:% d \ n姓名:%s\n ,boy1.num,boy 1 . name);Printf (gender:% c \ nScore: %f\n ,boy1.sex,boy 1 . score);系统(“暂停”);返回0;}运行结果:
在这个例子中,boy2和boy1被定义为外部结构变量,boy1被初始化和赋值。在main函数中,将boy2的值作为一个整体赋给boy1,然后用两个printf语句输出boy1每个成员的值。
结构是由若干数据项组成的复杂数据对象,这些数据项被称为结构的成员。
要定义一个结构,需要给出每个成员的类型和名称。
结构定义只描述一个结构的形式。要在程序中使用结构,你需要声明结构变量。
点运算符(。)用于访问结构成员。一般形式是:结构变量名。成员名称。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。