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++知识库 -> 结构体进阶(1)---结构体类型的创建 -> 正文阅读

[C++知识库]结构体进阶(1)---结构体类型的创建

匿名结构体类型

再声明结构的时候,可以不完全的声明。
以下代码省略了标签,所以只能使用已经创建好的变量,不能再通过结构体创建新的变量

// 匿名结构体类型
struct  {
	char name[20];
	short int price;
	short int version;//全局变量
}book1, book2;

struct {
	char name[20];
	short int price;
	short int version;//全局变量
}*book3,books[2];
int main() {
	//struct ? book5 //不能创建新的变量
	strcpy(book1.name, "lihua");
	book1.price = 20;
	(*book3).price = 30;

	return 0;
}

注意以下代码

struct {
	char name[20];
	short int price;
	short int version;//全局变量
}book1;

struct {
	char name[20];
	short int price;
	short int version;//全局变量
}*book3;
int main() {
	
	book3 = &book1;

	return 0;
}

这种代码其实是有错的,编译器会将这两个结构体认为是两个不同类型的结构体,所以是非法的。

结构体的自引用

结构体类型中要包含自己这种类型的变量应该怎么办?
先看下面这块代码

struct Node {
	int data;
	struct Node n;
};

int main() {
	
	printf("%d\n", sizeof(struct Node));
	getchar();
	return 0;
}

这个struct Node结构体中,包含data和自己,然后看起来循环起来了,没办法判断多大字节,所以是
错误的。
正确的应该是,结构体中存放下一个结构体的指针

struct Node {
	int data;//4
	struct Node* next;//4/8
};

int main() {
	
	printf("%d\n", sizeof(struct Node));

	getchar();
	return 0;
}

他的大小是可以确定出来的,在32位环境里面是8个字节。
以下代码是对这个结构体类型进行重命名,

//正确的写法
typedef struct Node {
	int data;
	struct Node* next;
}Node;

int main() {
	
	struct Node n1;
	Node n2;

	getchar();
	return 0;
}

上面先有了 struct Node类型,然后变量成员里面有Node* next是正确的
使用匿名结构体类型

//错误的写法
typedef struct  {
	int data;
	Node* next;
}Node;

这种写法是错误的,因为Node是Node* next;之后才创建出来的,会出现逻辑错误。所以重命名的时候,建议不删除标签Node

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

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