C语言结构体

结构体是一种构造数据类型
有三种形式:数据类型、结构体类型(struct)、共用体类型(union)

一般形式:
struct [结构体名]
{
类型标识符 成员名;
类型标识符 成员名;

};//牢记还有一个分号

1、基本结构体

1.1、定义结构体类型变量的3种方法
1.1.1、先定义结构体类型+再定义变量名
例题:

struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
struct student stu1,stu2;

1.1.2、定义结构体类型+同时定义结构体类型变量
例题:

struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;

1.1.3、直接定义结构体类型变量
例题:

struct
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;

1.2、结构体变量的初始化
格式:结构体类型 结构体变量名={初始值表 };
方法一:

struct student
{ char name[10];
int age;
float score[5],ave;
}stu={“ZhangJin”,20,78,92,83,75,69};

方法二:

struct student
{ char name[10];
int age;
float score[5],ave;
};
struct student
stu={“ZhangJin”,20,78,92,83,75,69};

1.3、结构体变量的引用

1.3.1、结构体类型数据成员的引用

引用规则:结构体变量出同类型赋值外,不能整体引用,只能引用变量成员
引用方式: 结构体变量名.成员变量
stu.name = “ZhangJin”;

1.3.2、求结构体类型数据的字节数

sizeof(变量名或类型名);

1.3.3、嵌套结构体中成员的引用

结构体嵌套时,逐级引用

struct student
{
int num;
char name[20];
struct date
{ int month;
int day;
int year;
}birthday;
}stu1,stu2;

//给出生日期的年份赋值
stu1.birthday.year = 1999;

2、结构体数组

2.1 结构体数组的定义及初始化

2.1.1结构体数组的定义,与定义结构体类型变量很类似,也有三种形式
形式一:

struct student
{ int num;
char name[20];
char sex;
int age;
};
struct student stu[2];

形式二:

struct student
{ int num;
char name[20];
char sex;
int age;
}stu[2];

形式三:

struct
{ int num;
char name[20];
char sex;
int age;
}stu[2];

2.1.2 结构体数组的引用

struct student
{ int num;
char name[20];
char sex;
int age;
}str[3]={{10,”XiaoWang”,’,M’,20}};
str[1]=str[0];

2.1.3、结构体数组元素成员的引用
引用方式: 结构体数组名[下标].成员名

struct student
{ int num;
char name[20];
char sex;
int age;
}str[3];
stu[1].age++;
strcpy(stu[0].name,”ZhangSan”);

3、结构体和指针

3.1 结构体指针变量的定义
定义形式:struct 结构体名 *结构体指针名;

struct student * p;
//此时指针变量*p中存放的是–结构体变量在内存的起始地址
//例:
struct student
{ int num;
char name[20];
char sex;
int age;
}stu;
struct student *p=&stu;

3.2 结构体指针变量的引用
使用结构体指针变量引用成员形式

(*结构体指针变量名).成员名 <=> 结构体指针变量名->成员名 <=> 结构体变量名.成员名
例题:

int n;
int *p = &n;
*p = 10; <=> n = 10;
struct student
{
long int num;
char name[20];
char sex;
float score;
}stu1;
struct student *p = &stu1;
stu1.num=101; <=> (*p).num=101; <=> p->num=101;

文章来源:https://blog.csdn.net/u014455929/article/details/52552365
感谢博主的博客,让我们有学习的机会!谢谢!推荐>>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值