20.【C语言】初识结构体(重要)

目录

0.摘抄:《计算机科学导论》的数据结构:记录

1.定义

2.作用

3.格式       

4.结构体嵌套


备注:如果看过《计算机科学导论》的数据结构:记录,可以轻松理解结构体

0.摘抄:《计算机科学导论》的数据结构:记录

1.定义

由一批数据组合而成的结构型数据

2.作用

描述复杂对象,创建新的类型

3.两种主流格式      

第一种 

struct 结构体标签
{
    成员列表;
}变量列表(全局变量);//变量列表可以不写,但;必须有!!!

变量列表;可以是1个或多个:如s1;或s2,s3,s4;

当然也可以另起几行来写,但变量类型不同

//下方的s1~s5是局部变量
struct 结构体标签 s1;
struct 结构体标签 s2;
struct 结构体标签 s3;
struct 结构体标签 s4;
struct 结构体标签 s5;

介绍点操作符(.)用于结构体成员的直接访问

用法:结构体变量.成员变量

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
struct hotalcard
{//描述hotalcard的信息
	char name[10];
	int age;
	char deadline[10];
};//分号要写!!!
int main()
{
	struct hotalcard s = { "名字",20,"2024.7.2" };//从左向右依次录入成员变量的信息:结构体的创建和初始化
//如果想乱序,要写".名称=":
//struct hotalcard s = {.deadline="2024.7.2", .name="名字", .age=20 };
	printf("%s %d %s", s.name, s.age, s.deadline);//格式:结构体变量.成员变量
  return 0;
}

注:结构体本质上是数组,因此s.name、s.age、s.deadline 相当于 s[name]、s[age]、s[deadline]

将字符串存储到变量中用字符数组char name[10]; 

第二种 利用typedef重定义

typedef 原类型名
{
  //......
}新类型名;

struct 原类型名
{
  //......
};
typedef struct 原类型名 新类型名;


原类型名等价为新类型名

例如

typedef int SLDataType;
typedef struct Seqlist
{
	SLDataType* a;
	int size;
	int capacity;
}SL;

 注:结构体的类型为struct SeqList(struct必须写)
SL等价为struct Seqlist

写成下面这样是错误的

typedef struct Seqlist
{
    Seqlist* next;//Seqlist不是结构体的类型,要写成 struct Seqlist* next;
}SL;

同理,下面这样的写法也是错误的

typedef struct Seqlist
{
    SL* next;
}SL;

在结构体的下方写关于SL的语句才起作用 (语法原因:向上查找)

4.结构体嵌套

struct a
{
  int b;
  char c;
};
 struct d
{
  struct a;
  int e;
}
int main()
{
  struct d f={{10,"test"},20};//{10,"test"}表示struct a
  printf("%d",f.a.b);//打印10
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangcoder

赠人玫瑰手有余香,感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值