用户自己定义的结构体类型,与系统定义的标准类型一样,是可以用来定义结构体类型的变量。这种方法定义的结构体类型在程序后面不可使用,因为缺少完整的结构体类型名。......
2023-10-21
结构体类型定义的一般形式为:
在结构体类型的定义形式中,各组成成分的意义如下:
①struct是结构体声明的关键字,不能省略。“struct 结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量。
②结构体名是一个标识符,命名是既要考虑其名字的含义,又必须要符合标识符的命名规则。
③“数据类型名 结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。
④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。
例如,描述学生信息的结构体可以如下定义:
在这个结构体类型定义示例中,结构体数据类型的名字为:struct student;该结构体数据类型由4个成员组成:第一个成员名为num,是一个整型变量;第二个成员名为name,是一个字符数组(字符串);第三个成员名为sex,是一个字符变量;第四个成员为score,是一个含有5个元素的整型数组。
在程序中定义好结构体类型后,还需要定义变量才能使用这个结构体类型。在C程序中,可以使用下面三种方法来定义结构体类型变量:
·先定义结构体数据类型,然后定义该数据类型的变量。
成员列表;
}变量列表;
例如,下面的C语句序列在定义结构体数据类型struct student的同时定义了结构体变量stu3和stu4。(www.chuimin.cn)
·省略结构体名,直接定义结构体变量。其一般形式为:
使用前两种方法时,都定义了完整的结构体数据类型,在程序中都可以使用该结构体数据类型名来定义另外的变量。使用第三种方法,由于没有定义完整的结构体类型(即该定义后没有结构体数据类型的名字),在程序中仅能使用同时定义的那几个变量,不能再定义另外的变量。
在结构体数据类型和结构体变量定义和使用过程中,还需要注意以下几点:
①结构体类型和结构体变量是两个不同的概念,不能混淆。结构体类型只是描述一个结构体数据类型的形式,编译系统并不对它分配内存空间。只有定义结构体类型变量时,系统才为该变量分配存储空间。
②结构体变量的存储长度为各成员长度之和。在程序中常用sizeof运算符获取,如sizeof(stu1)、sizeof(struct student)等。
③使用结构体变量时,一般不能将它作为一个整体来使用,只能使用结构体变量的各成员分量。
④结构体成员名字既可以与程序中其他变量名相同,也可以与其他结构体类型中的成员名相同。
⑤为使用方便,常用#define定义一个符号常量(宏定义)来代表一个结构体类型。例如,有宏定义为:
#define STUDENT struct student
则在程序此后的代码中,可以使用宏名字STUDENT表示struct student。下面两条C语句表示了同样的意义:
STUDENT stu1,stu2;//定义struct studeng类型变量stu1和stu2
struct student stu1,stu2;//定义struct studeng类型变量stu1和stu2⑥结构体成员也可以是一个其他类型的结构体变量,即该成员的数据类型是另外一个结构体类型,这种情况称为结构体类型的嵌套定义。例如,下面代码段描述了结构体嵌套定义的一个示例:
有关C语言程序设计基础(第3版)的文章
用户自己定义的结构体类型,与系统定义的标准类型一样,是可以用来定义结构体类型的变量。这种方法定义的结构体类型在程序后面不可使用,因为缺少完整的结构体类型名。......
2023-10-21
还可以在枚举类型定义中对枚举元素起始值作多次改变,每次改变后枚举值从该处开始递增直到遇到下一次起始值的指定为止。枚举数据类型定义完成后,仍然需要定义枚举变量才能使用,常见的方法有:①先定义枚举类型,然后定义枚举变量。枚举变量的输入输出示例。......
2023-11-20
变量的生存期取决于它的存储类型。所谓“存储类型”,是指系统为变量分配的具有某种特性的存储区域。生存期表示了变量存在的时间。一个变量究竟属于哪一种存储方式,并不能仅从其作用域来判断,还应有明确的存储类型说明。在C语言中,函数内部凡未说明存储类型的变量均视为自动变量。静态局部变量始终存在着,也就是说它的生存期为整个源程序生存期。静态局部变量的使用举例。......
2023-10-21
变量是指程序在运行过程中其值可以发生变化的量。一个变量有3 个要素:变量名、变量类型和变量值。另外,系统还根据变量的类型检查该变量所进行的运算是否合法等。C 语言中,变量必须先声明,然后使用。整型变量的定义和使用。程序执行结果为:浮点型数据的舍入误差举例。由于实数存在舍入误差,使用时需要注意以下几点:不要试图用一个实数精确表示一个大整数,因为浮点数是不精确的。字符变量应用举例,字母大小写转换。......
2023-10-21
图5.3指针变量指针变量本身也是变量,所以指针变量在使用之前也需要定义。为指针变量赋值的方法有两种:一种是定义后,使用赋值语句的方式;另外一种是定义的同时进行初始化方式。......
2023-11-20
指向结构体变量的指针变量叫结构体类型指针变量,其定义方式、使用方法与指向基本变量的方法相同。使用结构体指针变量时还需要特别注意,结构体变量的地址与结构体变量成员的地址是不同的。已知某学生3门课程的成绩存放在一个结构体变量中,请设计一个独立的函数计算该学生的平均成绩,要求函数使用结构体指针变量做函数的形式参数。......
2023-11-20
包括函数名的命名和类型说明、形式参数的类型说明、变量定义和语句。下面举例说明主函数和自定义函数。函数的定义是平行的,彼此相互独立,不能嵌套定义。函数的类型和函数返回值的类型应保持一致。以两个数求和为例,说明函数的定义。......
2023-10-21
对于嵌套的结构体类型变量,访问其成员时应采用逐级访问的方法,直到获得所需访问的成员为止。利用结构体变量作函数参数,实现计算某学生3门课程平均成绩的功能。......
2023-11-20
相关推荐