结构体(2)

news/2024/9/19 0:36:38/ 标签: c语言, 有问必答, 笔记

有任何不懂的问题可以评论区留言,能力范围内都会一一回答

我们先直接上代码看看结构体的另一种用法

1.匿名结构体

define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//第一个struct
struct
{char c;int i;double d;
}s1;//第二个struct
struct
{char c;int i;double d;
}*ps;int main(void)
{ps = &s1;return 0;
}

我们发现上面两个struct类型都是没有名字的,也称为匿名结构体,创建这种匿名结构体只能如上图所示声明。

这种匿名结构体一般你只打算把这个结构体用一次的时候可以这么用

那我们再来看第二个,ps=&s1这个,是否是将匿名结构体s1的地址给到ps呢?

答案是否定的,这样的步骤是非法的

编译器会把两个匿名结构体类型当作两个不同的结构体去处理

2.结构体的自引用

结构体的自引用和函数递归是类型的,我们先来看一串代码

struct Node
{int date;struct  Node next;
};

我们这样写代码可不可以呢?

这样写其实有一个问题就是每一个Node的结构体的大小是无穷无尽的,因为这样是无限嵌套的

那么我们怎么让结构体的大小确定下来呢?

这个时候我们就可以用指针了

因为指针的大小和它所指向的值是无关的,并且指针大小是确定的

这样结构体Node的大小就是一个确定的值

我们还可以通过指针去找到下一个Node结构体

struct Node
{int date;struct  Node* next;
};

这样写就好啦!

3.结构体重命名

我们来看这串代码

typedef struct Node
{int date;struct  Node* next;
}Node;

我们把 struct Node
{
    int date;
    struct  Node* next;
};

命名成Node

这样当我们使用Struct Node时候就可以直接用Node去代替了

那如果这样呢

typedef struct Node
{int date;Node* next;
}Node;

那么这个地方可以这样写吗?

显然是不行的,因为

typedef struct Node
{
    int date;
    struct  Node* next;
}Node;

这串代码跑完我们才重命名成功

你都没有跑完,都没有重命名成功,就去使用重命名后的,编译器自然无法识别了

(Node* next;编译器无法识别)

先后顺序要分清

那如果这样写呢?
 

typedef struct 
{int date;struct  Node* next;
}Node;

这样同样不行,对一个匿名结构体重命名,原理和上面一样,你都没有跑完,都没有重命名成功,就去使用重命名后的,编译器自然无法识别了(struct  Node* next;编译器无法识别)


http://www.ppmy.cn/news/1519308.html

相关文章

密码管理最佳实践:安全存储与定期更换的艺术

在数字化时代&#xff0c;密码作为我们个人信息与资产安全的第一道防线&#xff0c;其重要性不言而喻。然而&#xff0c;随着网络威胁日益复杂多样&#xff0c;仅仅设置一个强密码已不足以保障安全。良好的密码管理实践&#xff0c;特别是安全存储与定期更换密码&#xff0c;成…

【Python机器学习】NLP词中的数学——向量化

我们将文本转换为基本的数值&#xff0c;虽然只是把它们存储在字典中。我们不使用频率字典来描述文档&#xff0c;而是构建词频向量。在Python中&#xff0c;这可以使用列表来实现&#xff0c;但通常它是一个有序的集合或数组&#xff1a; document_vector[] doc_lengthlen(to…

MATLAB智能优化算法-学习笔记(2)——变邻域搜索算法求解旅行商问题【过程+代码】

旅行商问题 (TSP) 旅行商问题(Traveling Salesman Problem, TSP)是经典的组合优化问题之一。问题的描述是:给定若干个城市以及每对城市之间的距离,一个旅行商需要从某个城市出发,访问每个城市恰好一次,最后回到出发城市,目标是找到一条总距离最短的环路。TSP 是 NP-har…

SQL 注入之 sqlmap 实战

在网络安全领域&#xff0c;SQL 注入攻击一直是一个严重的威胁。为了检测和利用 SQL 注入漏洞&#xff0c;安全人员通常会使用各种工具&#xff0c;其中 sqlmap 是一款非常强大且广泛使用的开源 SQL 注入工具。本文将详细介绍 sqlmap 的实战用法。 一、sqlmap 简介 sqlmap 是一…

安装vmtools管理虚拟机教程

目录 1.什么是vmtools 2.安装教程 2.1删除和安装 2.2文件的复制和粘贴 2.3指令操作 3.检验效果 4.小结 1.什么是vmtools vmtools就是安装之后可以让我们更好的管理我们的虚拟机&#xff1b; 我们可以设置windows和centos共享的文件夹&#xff0c;让该文件夹实现共享&am…

win11,vscode上用docker环境跑项目

1.首先用dockerfile创建docker镜像 以下是dockerfile文件的内容&#xff1a; FROM pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel LABEL Service"SparseInstanceActivation"ENV TZEurope/Moscow ENV DETECTRON_TAGv0.6 ARG DEBIAN_FRONTENDnoninteractiveRUN apt-…

milvus多个Querynode,资源消耗都打在一个节点上

milvus 查询时的原理 当读取数据时&#xff0c;MsgStream对象在以下场景中创建&#xff1a; 在 Milvus 中&#xff0c;数据必须先加载后才能读取。当代理收到数据加载请求时&#xff0c;会将请求发送给查询协调器&#xff0c;查询协调器决定如何将分片分配到不同的查询节点。…

【原型设计工具评测】Axure、Figma、Sketch三强争霸

在当今的数字化设计领域&#xff0c;选择合适的原型设计工具对于项目的成功至关重要。Axure、Figma 和 Sketch 是目前市场上最受欢迎的三款原型设计工具&#xff0c;它们各具特色&#xff0c;满足了不同用户的需求。本文将对这三款工具进行详细的对比评测&#xff0c;帮助设计师…

苹果笔记本电脑能不能玩游戏?苹果电脑玩游戏咋样?

过去Mac玩不了游戏最大的问题&#xff0c;就是图形API自成一体&#xff0c;苹果既不支持微软的DirectX&#xff0c;同时为了推广自家的Metal图形API&#xff0c;又对OpenGL和Vulkan两大主流的通用API敬而远之。游戏生态、硬件瓶颈让苹果电脑不适合玩游戏。 不过说到底&#xf…

Qt详解QHostInfo

文章目录 前言QHostInfo简介QHostInfo的优势使用流程概述QHostInfo主要函数1. `QHostInfo::lookupHost()`2. `QHostInfo::fromName()`3. `QHostInfo::addresses()`4. `QHostInfo::error()`5. `QHostInfo::errorString()`使用示例更多用法总结前言 QHostInfo 是 Qt 网络模块中的…

支付平台一般采取哪些措施来保护我的个人信息

支付平台个人信息保护措施概览 支付平台为了保护用户的个人信息&#xff0c;采取了多种安全措施。这些措施主要包括数据加密传输、多重身份验证、实时监测与风险预警系统、安全支付环境的建立等。支付平台通常采用SSL/TLS等加密技术来保障用户信息在传输过程中的安全&#xff…

75.给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,实现一个算法原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列

LeetCode 颜色分类问题详解 一、题目描述 给定一个包含红色、白色和蓝色,共 n 个元素的数组 nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的…

mysql查询慢除了索引问题还会是因为什么?

问题 作为一个程序员SQL查询慢的问题在工作和面试中都是会经常遇到的问题, 一般情况下我们都会联想到索引问题, 那么除了索引问题还有什么其他的场景会导致SQL查询慢呢? MySQL执行查询逻辑 例如我们使用可视化工具执行这样一条SQL: select * from user_info where age 10;…

基于ssm+vue+uniapp的农业电商服务系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

网络模型及协议介绍

一.OSI七层模型 OSI Open System Interconnect 开放系统互连模型 以前不同厂家所生产的网络设备的标准是不同的&#xff0c;所以为了统一生产规范就制定了OSI这个生产模型。 作用&#xff1a;降低网络进行数据通信复杂度 这个模型的作用第一降低数据通信的复杂度&#xff…

World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Warsong Gulch

Call to Arms: Warsong Gulch - Quest - 魔兽世界怀旧服CTM4.34《大地的裂变》数据库_大灾变85级魔兽数据库_ctm数据库 10人PVP战歌峡谷&#xff0c;该战场经常用来互刷军衔和荣誉&#xff0c;哈哈 wow plugin_魔兽世界挂机插件-CSDN博客

计算机网络端口

应用在通信过程中是通过端口来识别发送交付的。那么通信的一方是怎么知道对方的应用进程的端口号呢&#xff1f; 2017年12月25日&#xff0c;星期一&#xff0c; 简单点说这些信息都被封装在ip包内&#xff0c; 我个人觉得你现在不太明白的地方是不太清楚数据包在传递过程中…

Word中设置奇数页的页眉为一级标题内容;偶数页的页眉为文章题目

1.在Microsoft Word中设置奇数页和偶数页不同的页眉 可以通过以下步骤进行&#xff1a; 打开Word文档&#xff1a;首先&#xff0c;打开你想要设置页眉的Word文档。 进入页眉和页脚编辑模式&#xff1a; 双击文档顶部的页眉区域&#xff0c;或者在“插入”选项卡中点击“页眉…

Mysql面试专题

mysql学习图 慢查询 什么是慢查询&#xff1a;慢查询是指数据库中查询时间超过指定阈值&#xff08;美团设置为100ms&#xff09;的SQL&#xff0c;它是数据库的性能杀手&#xff0c;也是业务优化数据库访问的重要抓手。 其实也就是一些比较慢的查询语句&#xff0c;严重的影…

在Ubuntu 20.04上安装MySQL的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 MySQL 是一个开源的数据库管理系统&#xff0c;通常作为流行的 LAMP&#xff08;Linux、Apache、MySQL、PHP/Python/Perl&#xf…