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语言提供了基本的数据结构,例如 char 、short 、int 、float....等类型;这些偶称为内置类型。怎样设计出来属于自己的类型?

? ? ? ? 比如:当我们定义一个人的时候,人的不同属性就比较难用同一个数据类型来定义了,因为人的身高、年龄、体重等属性往往需要不同数据类型,在这个时候,我们便引入结构体这个概念

? ? ? ? 使用结构体来封装一些属性,设计出新的类型,在C语言中称为结构体类型。结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量

结构声明(structure declaration)

struct 结构体名
{
   成员列表(可以是基本的数据类型,指针,数组或其他结构类型)
};
/*struct关键词表示接下来是一个结构。*/
struct People
{
  char s_id[8];
  char s_name[8];
  char s_sex[4];
  int s_age;
};

注意;

  1. 关键字struct是数据类型说明符,指出下面说的是结构体类型;
  2. 标识符Student是结构体的类型名;
  3. 最后的分号一定要写;

二、结构体的定义及初始化

? ? ? ?结构体的声明只是进行一个简单的描述,实际上在没有定义结构体类型变量之前,它是不会在内存中分配空间的。

 int main()
{
    struct People people;//局部变量--放在栈区
    return 0;
}

* struct 结构体名称 结构体变量名

? ? ? ?结构体是一种数据类型,也就是说可以用它来定义变量。就像一个“模板”,定义出来的变量都具有相同的性质。可以将结构体比作“图纸”,结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的;

  1. 结构体是一种数据类型,是创建变量的模板,不占用内存空间;
  2. 结构体变量才包含了实实在在的数据、需要存储空间;

三、结构体成员访问?

  • 结构体变量使用? ?.? ?访问;
  • 结构体变量.对象
#include<stdio.h>
#include<string.h>
struct Date
{
	int year;
	int month;
	int day;
};
struct Student
{
	char s_name[20];
	struct Date birthday;
	float score;
};
int main()
{
	struct Student stu = { "liuwen",2000,10,1,99.9 };
	printf("name=%s\nbirtyday=%d.%d.%d\nscore=%f\n", stu.s_name, stu.birthday.year, stu.birthday.month, stu.birthday.day, stu.score);
	stu.score = 77;
	printf("name=%s\nbirtyday=%d.%d.%d\nscore=%f\n", stu.s_name, stu.birthday.year, stu.birthday.month, stu.birthday.day, stu.score);
	return 0;

注意:对结构体变量整体赋值有三种情况

  1. ?定义结构体变量(用{}初始化)
  2. 用已定义的结构体变量初始化
  3. 结构体类型相同的变量可以作为整体相互赋值;

在C语言中不存在结构体类型的强制转换。

四、结构体变量和指针

内置类型可以定义指针变量,结构体类型也可以定义结构体类型指针;

结构体类型指针访问成员的获取和赋值形式:

(1)(*p). 成员名(.的优先级高于*,(*p)两边括号不能少)

(2)? ?p->成员名(->指向符)

#include<stdio.h>
#include<string.h>
struct Inventory//商品
{
	char description[20];//货物名
	int quantity;//库存数据
};
int main()
{
	struct Inventory sta = { "iphone",20 };
	struct Inventory* stp = &sta;
	char name[20] = { 0 };
	int num = 0;
	(*stp).quantity = 30;
	stp->quantity = 30;
	strcpy_s(name,sizeof(stp->description),stp->description);
	printf("%s %d\n", stp->description, stp->quantity);
	printf("%s %d\n", (*stp).description, (*stp).quantity);
	return 0;
}

结构体和函数?

#include<stdio.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNINGS
struct School
{
	char s_name[20];//学校
	int s_age;
};
void Print_a(struct School sx)
{
	printf("%s %d\n", sx.s_name, sx.s_age);
}
void Print_c(struct School* sp)
{
	printf("%s %d\n", sp->s_name, sp->s_age);
}
int main()
{
	struct School sx = { "xi'an",100 };
	Print_a(sx);
	Print_c(&sx);
	return 0;
}

五、struct和class的区别

  1、什么是class?

  class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段、属性、方法、属性、构造函数、索引器、操作符等。因为是基本的概念,所以不必在此详细描述,读者可以查询相关概念了解。我们重点强调的是.NET中,所有的类都最终继承自System.Object类,因此是一种引用类型,也就是说,new一个类的实例时,对象保存了该实例实际数据的引用地址,而对象的值保存在托管堆(managed heap)中。

 ?2、什么是struct?

  struct(结构)是一种值类型,用于将一组相关的信息变量组织为一个单一的变量实体。所有的结构都继承自System.ValueType类,因此是一种值类型,也就是说,struct实例分配在线程的堆栈(stack)上,它本身存储了值,而不包含指向该值的指针。所以在使用struct时,我们可以将其当作int、char这样的基本类型类对待。
?

  • 1.默认继承权限,class的继承按照private继承处理,struct的继承按照public继承处理;
  • 2.成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。
  • 3.struct是值类型,class 是对象类型

六、参考?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:32:27  更:2022-07-03 10:35:38 
 
开发: 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年11日历 -2024/11/23 16:55:25-

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