IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C与C++之结构体 -> 正文阅读

[C++知识库]C与C++之结构体

?
?

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…


欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:

前言

任何事物的存在皆有其不可被代替的意义,那么在C和C++中结构体存在的意义是什么呢?

(一)为什么要用结构?

在C和C++中可以用数组存储许多相同类型和意义的相关信息,然而,有一些信息是由若干个不同的数据类型和不同意义的数据所组成,数组显然不能满足编写程序的需求,为了解决这个难题,结构应运而生。举个栗子:把身份证看作是一个结构,在这个结构中包含姓名、年龄、籍贯等信息。只要拿出这个身份证就可以确定一个人的身份,也可以在这个身份证上获取某个信息,当然了,要确保这个身份证是他的。【滑稽】

(二)定义一个结构体

@标准的定义方法

需要用到关键词 struct
语句结构如下:

//标准的结构体定义:
struct  Student		//名为Student的结构体
{
	int age;				//成员一:年龄
	char name[20];			//成员二:名字
	char tele_number[11];	//成员三:电话号码
};		//分号!!!!! 一定要有

@常用的定义方法

在此之前需要一个小小的插曲: 关键词typedef的使用:

typedef int INT;	//给int起一个别名叫做 INT。
//下面的两种变量定义具有相同效果。
int a = 0;	
INT a = 0;

通过typedef这个关键词,把结构体定义成下面这样:(我最喜欢的方式)

typedef struct
{
	int age;				//成员一:年龄
	char name[20];			//成员二:名字
	char tele_number[11];	//成员三:电话号码
} Student, *pStudent; 	

通过上面的代码段,我们定义了一个名为Student的结构体和Student类型的指针pStudent。
抛开事实,可以把上面的代码段理解为如下的语句:

struct  Student		//名为Student的结构体
{
	int age;				//成员一:年龄
	char name[20];			//成员二:名字
	char tele_number[11];	//成员三:电话号码
};	
typedef Student * pStudent;	//一个Student类型的指针类型 pStudent

但是这个写法有一个弊端, 不能进行嵌套定义(什么是嵌套定义后面再说)。

(三)访问及赋值操作

不能进行访问和赋值操作的数据结构是不合格的,结构体也不例外。
结构体中成员变量的访问操作符是:. 没错就是点。

Student stu;	//Student 类型的变量 stu
//两种访问方式:
//第一种:
int ageee = stu.age;	//把stu的成员age的值赋给ageee
//第二种:指针访问
//定义一个Student类型的指针变量pStu指向stu。
pStudent pStu = &stu;//还记得pStudent是什么吗? 用处来了。
int ageee = pStu->age;	//把stu的成员age的值赋给ageee

接下来是赋值:

//初始化 两种方式

//第一种:
Student stu = {20, “Wang”, "18545669661"}//第二种
Student stu;
stu.age = 20;
stu.name = "Wang";
stu.tele_number = "18545669661";

//相同类型的结构体可以直接赋值
Student stu2 = stu;



你可能会想:为什么电话号码要用char类型的数组而不用int型的数组呢? 你可以试试,我相信你试过之后会喜欢char的。

(四)嵌套定义

什么是嵌套定义呢?和递归很像,递归是在函数内部调用该函数,嵌套定义是在该结构体中定义一个该结构体类型的成员指针。
举例:

struct  Student		//名为Student的结构体
{
	int age;				//成员一:年龄
	char name[20];			//成员二:名字
	char tele_number[11];	//成员三:电话号码
	Student* stu;	//嵌套一个该结构体类型的指针成员。
};	

嵌套定义是链表的常客。比如一个存储int数据的链表,它的结构体应该是:
记得我在结构体的定义处说的typedef来定义的弊端吗,就在这里。这里最好用标准的定义方式。

struct list
{
	int data;
	list* pList;
}

这样我们可以通过一些语句达到如下的效果:(链表操作不细说)
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:45:50  更:2022-08-19 18:45:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 13:23:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码