在C语⾔中,⼀个结构体可以包含指向⾃⼰的指针吗?

一、问题

typedef struct
{
    int num;
    short age;
    stu next;
} *stu;

        上述这段代码为什么编译出错?⼀个结构体不可以包含指向⾃⼰的指针吗?

二、解答

        在C语⾔中,⼀个结构体可以包含指向⾃⼰的指针,例如这样⼀个结构体类型:

struct person
{
    int id;
    char name[20];
    int age;
    struct person *next;
};

        在建⽴链表操作时,⽤结构体变量做链表的结点,在结构体中需要⾄少有⼀个指针类型,⽤这个指针类型指向⾃⼰的结构体类型来存放下⼀个结点地址。

        由此可知,⼀个指针类型的成员既可以指向其他类型的结构体数据,也可以指向⾃⼰所在的结构体类型的数据。

        既然⼀个结构体可以包含指向⾃⼰的指针,那么问题阐述中的代码错在哪⾥呢?

        stu 例⼦的错误主要出在声明 next 的时候 typedef 还没有定义,可以先给这个⾃定义的结构体⼀个标签,如 struct student ,然后声明 next 为 struct student *类型;或者对 typedef 类型和结构体类型分别定义。下⾯按照分别定义的⽅法对错误代码进⾏修改,代码如下。

struct student
{
    int num;
    short age;
    struct student *next;
};
typedef struct student *stu;

说明:

        根据上述说明的修改⽅法,还可以写出⼏种不同的正确代码。

三、总结

        在学习C语⾔时,有很多概念性的知识点要理解。typedef 定义是对⼀个数据类型定义别名,例如 “ typedef int COUNT; ”就是将整型 int 定义为 COUNT,⽽数据类型 int 是已经存在的类型。

        那么当将 typedef 移植到⾃定义的结构体中定义时,需要⾸先定义结构体, 然后再使⽤ typedef 对⾃定义的结构体进⾏别名定义。遇到编译错误,要寻找错误的答案, 要分析问题,可以找同类问题的正确的代码进⾏⽐较,观察两者意义上的不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/602096.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于卷积神经网络的高光谱图像分类详细教程(含python代码)

目录 一、背景 二、基于卷积神经网络的代码实现 1)建立卷积神经网络模型 2)训练函数代码 3)全图可视化 三、项目代码 一、背景 卷积神经网络(Convolutional Neural Networks, CNNs)在处理高光谱图像分类任务时&…

Mask RCNN(Mask_RCNN-master)简单部署

一.注意事项 1.本文主要是引用大佬的文章(侵权请联系,马上删除),做的工作为简单补充 二.介绍 ①简介: Mask R-CNN(Mask Region-based Convolutional Neural Network)是一种用于目标检测和语义…

两个手机在一起ip地址一样吗?两个手机是不是两个ip地址

在数字时代的浩瀚海洋中,手机已经成为我们生活中不可或缺的一部分。随着移动互联网的飞速发展,IP地址成为了连接手机与互联网的桥梁。那么,两个手机在一起IP地址一样吗?两个手机是不是两个IP地址?本文将带您一探究竟&a…

Apipost使用心得,让接口文档变得更清晰,更快捷

Idea和Apipost结合使用 Idea 安装插件Apipost-Helper-2.0 在【file】–>【settings】–>【Plugins】搜索 “Apipost-Helper-2.0”–>【install】,重启Idea 编写controller接口 在idea中编写业务功能及接口之后,在controller中鼠标【右键】单…

亚马逊Amazon商品详情和关键词搜索API接口分享

一、亚马逊Amazon商品详情API接口 亚马逊商品详情API接口是亚马逊平台为开发者提供的一项重要服务,它允许开发者通过程序调用API来获取亚马逊商品的相关数据。这个接口为获取商品数据提供了便利的途径,有助于用户进行商品搜索、商品分类以及数据分析等操…

Stable Diffusion基础:ControlNet之人体姿势控制

在AI绘画中精确控制图片是一件比较困难的事情,不过随着 ControlNet 的诞生,这一问题得到了很大的缓解。 今天我就给大家分享一个使用Stable Diffusion WebUI OpenPose ControlNet 复制照片人物姿势的方法,效果可以参考上图。 OpenPose 可以…

不得不聊的微服务Gateway

一、 什么是Gateway? 1.网关的由来 单体应用拆分成多个服务后,对外需要一个统一入口,解耦客户端与内部服务 2.网关的作用 Spring Cloud Gateway是Spring Cloud生态系统中的一员,它被设计用于处理所有微服务的入口流量。作为一…

Dice Semimetric Losses: Optimizing the Dice Score with Soft Labels

文章目录 Dice Semimetric Losses: Optimizing the Dice Score with Soft Labels摘要方法实验结果 Dice Semimetric Losses: Optimizing the Dice Score with Soft Labels 摘要 Soft Dice Loss(SDL)在医学图像领域的许多自动分割中发挥了关键作用。在过…

【数据库原理及应用】期末复习汇总高校期末真题试卷07

试卷 一、填空题(每空1分,共10分) 1.数据库管理系统在外模式、模式和内模式这三级模式之间提供了两层映象,其中 映象保证了数据的逻辑独立性。 2. 数据模型通常由 、数据操作和完整性约束三部分组…

vue 文本中的\n 、<br>换行显示

一、背景&#xff1a; 后端接口返回数据以\n 作为换行符&#xff0c;前端显示时候需要换行显示&#xff1b; demo&#xff1a; <p style"white-space: pre-wrap;">{{ info }}</p>data() {return {info: 1、优化图片\n 2、 优化时间\n}},项目上&#…

通配符证书价格350元

通配符SSL证书是一种特殊的域名SSL证书&#xff0c;这款SSL证书默认保护主域名以及主域名下的所有子域名&#xff0c;因此&#xff0c;子域名比较多的个人或者企事业单位开发者都倾向于选择通配符SSL证书来简化SSL证书管理过程&#xff0c;节省购买SSL证书的资金&#xff0c;降…

前端如何设置div可滚动,且设置滚动条颜色

在前端中&#xff0c;设置 div 为可滚动并通过 CSS 自定义滚动条的颜色并不是所有浏览器都直接支持的功能&#xff0c;因为滚动条的样式在很大程度上取决于操作系统和浏览器的默认样式。然而&#xff0c;你可以使用某些 CSS 属性来尝试自定义滚动条的外观&#xff0c;这些属性在…

JavaEE概述 + Maven

文章目录 一、JavaEE 概述二、工具 --- Maven2.1 Maven功能 仓库 坐标2.2 Maven之项目构建2.3 Maven之依赖管理 三、插件 --- Maven Helper 一、JavaEE 概述 Java SE、JavaEE&#xff1a; Java SE&#xff1a;指Java标准版&#xff0c;适用于各行各业&#xff0c;主要是Java…

2024 Flutter 一季度热门 issue/roadmap 进展和个人感触闲聊

因为最近的《Flutter&#xff1a;听说你最近到处和人说我解散了&#xff1f;》相关事件之后&#xff0c;不少人对于目前 Flutter 的一些进度情况比较关心&#xff0c;刚好这里做一个简要汇总&#xff0c;报告几个过去一季度相关的热门 issue/roadmap 情况&#xff0c;另外这些天…

邮件群发系统的效率怎么样?如何评估性能?

邮件群发系统的使用方法&#xff1f;邮件群发工具的关键功能&#xff1f; 邮件群发系统已成为企业、组织及个人进行信息沟通的重要工具。然而&#xff0c;当我们谈论邮件群发系统的效率时&#xff0c;我们需要从多个维度来全面分析和评估。AokSend就来介绍一下。 邮件群发系统…

ReactFlow的ReactFlow实例事件传参undefined处理状态切换

1.问题 ReactFlow的ReactFlow实例有些事件我们在不同的状态下并不需要&#xff0c;而且有时候传参会出现其它渲染效果&#xff0c;比如只读状态下我们不想要拖拉拽onEdgesChange连线重连或删除的功能。 2.思路 事件名称类型默认值onEdgesChange(changes: EdgeChange[]) >…

AI大模型探索之路-训练篇17:大语言模型预训练-微调技术之QLoRA

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

浅谈消息队列和云存储

1970年代末&#xff0c;消息系统用于管理多主机的打印作业&#xff0c;这种削峰解耦的能力逐渐被标准化为“点对点模型”和稍复杂的“发布订阅模型”&#xff0c;实现了数据处理的分布式协同。随着时代的发展&#xff0c;Kafka&#xff0c;Amazon SQS&#xff0c;RocketMQ&…

基于大数据+Hadoop的豆瓣电子图书推荐系统实现

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 基于大数…

组合模式(Composite)——结构型模式

组合模式(Composite)——结构型模式 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能通过通用接口像独立整体对象一样使用它们。如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如一个场景…
最新文章