资料来源:网络整理
时间:2023/2/17 11:53:47 共计:3567 浏览
结构类型是在程序中定义的类型,以指定记录的格式,它包括成员名称和类型,以及成员在内存中的存储次序。
一旦定义了结构类型,就可以像使用其他所有类型一样使用这种结构类型,可以声明具有这种结构类型的对象,定义指向这种对象的指针,以及定义具有这种结构类型元素的数组。
结构类型的定义从关键字 struct 开始,大括号内包含声明结构成员的列表:
struct [标签名称] {成员声明列表};
结构必须包含至少一个成员。下面的例子定义了 struct Date 类型,它有 3 个 short 类型的成员:
struct Date { short month, day, year; };
标识符 Date 是该结构类型的标签(tag)。标识符 year、month 和 day 是成员名称。
结构类型的标签属于一个不同的命名空间:即使结构标签与变量名或函数名相同,编译器也仍然可以区分。类似地,
对于每个结构类型,其中的每个结构成员名称都属于不同的命名空间。
结构的成员,可以定义为任何所需的完整类型,包括之前已定义的结构类型。但是不能是长度可变的数组,或者指向长度可变数组的指针。
下面的结构类型 struct Song 有 5 个成员,可以存储关于音乐记录的5种信息。成员 published 的类型是 struct Date,这正是前面的例子中所定义的结构类型:
struct Song { char title[64];
char artist[32];
char composer[32];
short duration; // 播放时间(秒)
struct Date published; // 出版日期
};
结构类型无法将自己的类型作为其成员的类型,因为自己的类型定义尚不完整,要在结束的大括号(})后才算定义完整。然而,结构类型可以包含指向自己类型的指针,这样的应用很常见。例如,在实现链表(linked list)和二叉树(binary tree)时,就会用到这种自引用结构(self-referential structure)。下面的例子为一个单向链表成员定义了一个类型:
struct Cell { struct Song song; // 这条记录的数据
struct Cell *pNext; // 指向下一条记录的指针
};
如果在多个源代码文件中使用同一个结构类型,应该将它的定义放在头文件中,再在各个源代码文件中包含该头文件。通常,同一个头文件中也会定义操作该结构类型的函数原型。那么,在所有包含给定头文件的源代码文件中,均可以使用该结构类型及其对应的操作函数。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。