C 语言中的结构体(数据结构)

版权声明:本文为博主原创文章,若转载请注明出处且不得删改。(如有错误请提出指正,部分文章会参考其他文章,已经表明参考出处,如有侵权请联系删除) https://blog.csdn.net/qq_34902437/article/details/83054507
结构体是在数据结构中经常使用的一类,下面对结构体进行一些知识的补充

结构体和数组的区别

在这里插入图片描述

结构体的声明

结构体声明的基本形式

struct tag {
	member-list
}variable-list;

参数解释

  1. tag:结构体的名字
  2. member-list:成员列表
  3. variable-list:变量列表

在结构体声明的时候,我们常会看到下面两种声明的方式

方式一(不带 tag)
struct {
	int age;
	char sex;
}man;

大多数初学者看到这一长串的时候会发昏,这样的声明形式和一般的 int a 的形式有什么关联呢?

在这里插入图片描述

方式二
struct people{
	int age;
	char sex;
};

struct people man1 , man2;

我们可以看到方式二的好处就是减少了变量声明的冗余。如果想方式一那样,你在另一个地方要声明一个相同的变量,就必须把前面的成员列表那一大部分也带上。

同时使用方法一还会存在下面这个问题


struct {
	int age;
	char sex;
}man1;

struct{
	int age;
	char sex;
};

man1 = man2;  // 报错 

虽然 man1 和 man2 是一样的结构体类型,但是编译器会认为是不同的类型。

但如果用方式二就不会报错

struct people{
	int age;
	char sex;
};

struct people man1 , man2;
struct people man3;

man1 = man3; // 这样就正确 

关于 typedef

typedef 也是在数据结构中常用的 C 语言的东西。它的英文翻译是 “类型定义”。下面就来
看看它的用法。

  typedef int Money

这句代码的意思就是,从今往后,Money 就可以代表 int 使用了。

Money money ; // 此时 money 就是 int 类型

至于为什么使用 typedef 这样的方式,个人最大的感受就是语义化吧,当然 typedef 为什么要使用的其他原因可以自行谷歌。

typedef 在结构体的使用

先来看看这段代码

typedef struct people {
	int age;
	char sex;
} chinese;

很多人会和结构体的声明弄混,其实不是,我用图例来解释就清楚了(对比结构体声明的图例,观察二者的区别)

在这里插入图片描述

当然,用 typedef 的时候,你也可以省略结构的标签,所以你有时还会看到下面的写法

typedef struct {
	int age;
	char sex;
} chinese;

结构成员的访问

主代码

struct people{
	int age;
	char sex;
};

struct people man1 , man2,man3,*man4;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34902437/article/details/83054507