求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 

C语言教程
C语言历史
C语言特点
C语言VS开发环境安装
C语言第一个程序
C语言程序执行流程
C语言printf()和scanf()函数
C语言变量
C语言数据类型
C语言关键字
C语言运算符
C语言注释
C语言转义序列
C语言常量
C语言控制语句
C语言if-else语句
C语言switch语句
C语言循环
C语言do-while循环
C语言while循环
C语言for循环
C语言break语句
C语言continue语句
C语言goto语句
C语言类型转换
C语言函数
C语言函数
C语言通过值和引用函数
C语言递归
C语言存储分类
C语言数组
C语言数组
C语言二维数组
C语言将数组传递给函数
C语言指针
C语言指针
C语言指针的指针
C语言指针算术运算
C语言字符串
C语言字符串
C语言gets()和puts()函数
C语言字符串函数
C语言strlen()函数
C语言strcpy()函数
C语言strcat()函数
C语言strcmp()函数
C语言strrev()函数
C语言strlwr()函数
C语言strupr()函数
结构联合体
C语言结构体
C语言结构体数组
C语言结构体嵌套
C语言联合体
文件处理
C语言文件处理
C语言fprintf()和fscanf()函数
C语言fputc()和fgetc()函数
C语言fputs()和fgets()函数
C语言fseek()函数
C语言rewind()函数
C语言ftell()函数
预处理器
C语言预处理器指令
C语言宏
C语言#include指令
C语言#define指令
C语言#undef指令
C语言#ifdef指令
C语言#ifndef指令
C语言#if指令
C语言#error指令
C语言#pragma指令
其它杂项
C语言数学函数
C语言命令行参数
 
 

C语言结构体嵌套
957 次浏览
3次  

C语言中的嵌套结构体表示在一个结构体中可以使用另一个结构作为成员。在C语言中定义结构体嵌套有两种方法:

通过独立的结构通过嵌入式结构

1. 独立结构

我们可以创建2个结构体,但在主结构中应该使用依赖其它结构体作为成员。我们来看看嵌套结构体的代码。

struct Date
{
int dd;
int mm;
int yyyy;
};
struct Employee
{
int id;
char name[20];
struct Date doj; // 嵌套一个结构体:Date,用于存储日期
}emp1;

 

如上所见,doj(加入日期)是Date类型的变量。 这里doj用作为Employee结构体中的成员。通过这样的方式,我们可以在其他结构体中使用Date结构。

2.嵌入式结构体

我们可以在结构体内定义结构体,它比第一种方式需要更少的代码。但它不能用于其它结构中。

struct Employee
{
int id;
char name[20];
struct Date
{
int dd;
int mm;
int yyyy;
}doj;
}emp1;

访问嵌套结构体

我们可以通过Outer_Structure.Nested_Structure.member访问嵌套结构的成员,如下所示:

e1.doj.dd
e1.doj.mm
e1.doj.yyyy

嵌套结构体示例

我们来看看C语言中嵌套结构体的一个简单例子。创建一个源代码文件:nested-structure.c,其代码如下 -

#include <stdio.h>
#include <string.h>
struct Employee
{
int id;
char name[20];
struct Date
{
int dd;
int mm;
int yyyy;
}doj;
}e1;
int main()
{
//storing employee information
e1.id = 1001;
strcpy(e1.name, "Maxsu");//copying string into char array
e1.doj.dd = 12;
e1.doj.mm = 11;
e1.doj.yyyy = 2018;
//printing first employee information
printf("employee id : %d\n", e1.id);
printf("employee name : %s\n", e1.name);
printf("employee date of joining (dd/mm/yyyy) : %d/%d/%d\n", e1.doj.dd, e1.doj.mm, e1.doj.yyyy);
return 0;
}


 

执行上面示例代码,得到以下结果 -

employee id : 1001
employee name : Maxsu
employee date of joining (dd/mm/yyyy)


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



957 次浏览
3次
 捐助