开辟一个存储空间以存放一个结构体数据

        在软件开发中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符new和delete 来取代malloc和free函数。注意:new和delete是运算符,不是函数,因此执行效率高。虽然为了与C语言兼容,C++仍保留malloc和free函数,但建议用户不用malloc和free函数,而用new和delete运算符。
        new运算符的例子:
        new int;                //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)        

        new int(100);        //开辟存放一个整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
        new char[10];       //开辟一个存放字符数组(包括10个元素)的空间,返回字符数组首元素的地址

        new int[5][4];        //开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址
        float * p=new float(3.14159)        开辟一个存放单精度数的空间,并指定该数的初值为3.14159,将返回的该空间的地址赋给指针变量p
        new运算符使用的一般格式为
        new 类型[初值]
        注意:用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。
        delete运算符使用的一般格式为
        delete 指针变量           (对变量)

        delete [] 指针变量        (对数组)
例如要撤销上面用new开辟的存放单精度数的空间(上面第5个例子),应该用
        delete p;
前面第3个例子用"new char[10];"开辟了字符数组空间,如果把new返回的地址赋给指针变量pt,则应该用以下形式的delete运算符撤销该空间:
        delete []pt;        //在指针变量前面加一对方括号,表示是对数组空间的操作

编写程序:

运行结果:

        注意:在main函数中并没有定义结构体变量,而是定义了一个基类型为Student的指针变量 p,用new开辟一段空间以存放一个Student类型的数据,空间的大小由系统根据Student自动算出,不必用户指定。执行new得到一个指向Student类型数据的指针(即所开辟空间的起始地址),把它赋给p。这样p就指向该空间。虽然没有定义结构体变量,但是可以通过指针变量p访问该空间。可以对该空间中各成员赋值,并输出它们的值。最后用delete撤销该空间。可以认为这是对一个无名的结构体变量进行操作。
        在动态分配/撤销空间时,往往将这两个运算符和结构体结合起来使用,是很有效的。

        可以看到:想访问用new所开辟的结构体空间,无法直接通过变量名进行,只能通过指针p进行访问。如果要建立一个动态链表,必须从第1个结点开始,逐个地开辟结点并输入各结点数据,通过指针建立起前后相连的关系。
        本文简要地介绍了结构体类型,这是一种很重要的类型,C++的类(class)类型就是在结构体类型基础上扩充发展而成的。有了结构体的基础,再进一步学习和掌握类,就比较容易了。

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

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

相关文章

使用查表法计算NTC热敏电阻的温度

代码: hardware.c /*《AVR专题精选》随书例程2.编程技巧项目:查表法使用NTC测量温度文件:hardware.c说明:硬件驱动文件作者:邵子扬时间:2012年12月12日*/ #include "hardware.h"// IO初始化 vo…

分享一下,如何搭建个人网站的步骤

在这段充满探索与创造的奇妙旅途中,我就像一位耐心的建筑师,在数字世界的荒原上精心雕琢,两周的时光缓缓流淌。每天,我与代码共舞,手执HTML、CSS与JavaScript这三大构建魔杖,一砖一瓦地筑起了梦想中的网络城…

Rcmp: Reconstructing RDMA-Based Memory Disaggregation via CXL——论文阅读

TACO 2024 Paper CXL论文阅读笔记整理 背景 RDMA:RDMA是一系列协议,允许一台机器通过网络直接访问远程机器中的数据。RDMA协议通常固定在RDMA NIC(RNIC)上,具有高带宽(>10 GB/s)和微秒级延…

星戈瑞FITC-Cytochrome C:荧光标记细胞色素C的研究与应用

细胞色素C(Cytochrome C)是一种位于线粒体内膜上的蛋白质。为了深入地研究细胞色素C在细胞生物学和病理学中的功能,科学家们常常采用荧光标记技术对其进行追踪和观察。其中,异硫氰酸荧光素(FITC)作为一种常…

《Deep learning practice》learning notes

学习笔记: 【公开课】旷视x北大《深度学习实践》(28课时全) R Talk | 旷视科技目标检测概述:Beyond RetinaNet and Mask R-CNN 文章目录 Lecture 1: Introduction to Computer Vision and Deep Learning(孙剑&#x…

生信网络学院|06月21日《SolidWorks Costing助力制造企业建立成本核算体系》

课程主题:SolidWorks Costing助力制造企业建立成本核算体系 课程时间:2024年06月21日 14:00-14:30 主讲人:张丹清 生信科技 售前顾问 Costing成本分析简介钣金件成本分析加工件成本分析装配体成本分析总结&答疑 安装腾讯会议客户端或…

期货以旁观者心态关注市场,会更加理性

1.期货交易具备较高灵活度,相比于股票,期货盈利速度明显提升。针对普通投资者,适量参与中线投机更为合适。 2.选择期货品种需兼顾市场属性稳定与计划特点较弱两方面,以及波动剧烈、投机特征显著的品种。 3.若市场环境不利且缺乏机…

2024.1版 IDEA share project on github 报错

2024.1版 IDEA share project on github 报错 报错信息报错原因解决办法 报错信息 Cannot load information for github.com/Worldfickler:Request response: Access tothis site has been restricted. lf you believe this is an error, please contacthttps://support.githu…

利用Python爬取天气数据并实现数据可视化,一个完整的Python项目案例讲解

要使用Python爬取天气数据并进行制图分析分几个步骤进行: 选择数据源:首先,你需要找到一个提供天气数据的API或网站。一些常见的选择包括:OpenWeatherMap、Weatherbit、Weather Underground等。 安装必要的库:你需要安…

idea右侧找不到Maven,在View-> Tool Windows下也找不到

正常情况Idea右侧没有Maven,只需去View -> Tool Windows 目录中找到Maven并点击Maven,Idea右侧就会出现 问题: idea右侧找不到Maven,在View -> Tool Windows 目录中也找不到Maven,下图 全局搜索ctrl N&#xff…

Spring中网络请求客户端WebClient的使用详解

Spring中网络请求客户端WebClient的使用详解_java_脚本之家 Spring5的WebClient使用详解-腾讯云开发者社区-腾讯云 在 Spring 5 之前,如果我们想要调用其他系统提供的 HTTP 服务,通常可以使用 Spring 提供的 RestTemplate 来访问,不过由于 …

RPA案例学习

京东采集数据 一、搜索商品 流程块 相对应源代码 二、抓取数据 流程块 相对应源代码

pycharm中import moveit_commander报错

在pythcharm中导入moveit_commander,会报一些找不到.so文件的error,比如:librosconsole.so libeigenpy.so ImportError: libmoveit_py_bindings_tools.so.1.1.14: cannot open shared objec 等等的报错 在 /etc/ld.so.conf.d 中 这两个文…

经典病毒上线流量分析-Lokibot

一、概述 Lokibot于2015年面世,持续活跃至今,是一种高度危险且隐匿的恶意软件,旨在窃取受害主机的敏感信息,包括存储的密码、浏览器登录凭据以及加密货币钱包等,并将这些信息上送到远程C2服务器上。本文将重点针对Lok…

RadioML 2016.10a 调制方式识别

RadioML 2016.10a 调制方式识别 MLP、CNN、ResNet X [] lbl [] for mod in mods:for snr in snrs:X.append(Xd[(mod,snr)])for i in range(Xd[(mod,snr)].shape[0]):lbl.append((mod,snr)) X np.vstack(X) file.close()上述论文的分类任务是识别和区分不同类型的无线电调制…

收藏这几个电子书搜索引擎网站,找书不再难!

书籍是我们快速学习获取知识的重要途径,其中,通过电子书学习是一种低成本的学习方式。然而,面对海量的电子书资源,如何快速找到自己想要的书籍呢?下面小编就来为大家介绍几个强大的电子书搜索引擎网站,帮助…

数字时代的创新:二人共益订单模式解析

一、引言 随着数字技术的飞速发展,商业模式也日新月异。其中,“二人共益订单模式”凭借其独特的互助与共赢理念,迅速在市场中获得关注。该模式不仅为用户提供了优质服务和独享优惠,更通过用户间的互助和订单共享,实现…

AbMole带你探索颅内压力与肌肉生长的联系:一项突破性研究

在生物医学领域,颅内压力(ICP)的调控机制一直是研究的热点。最近,一项发表在《PLOS ONE》上的研究为我们揭示了颅内压力与后颅窝肌肉生长之间的潜在联系,为我们理解某些慢性头痛的成因提供了新的视角。 颅内压力的异常…

期望25K,我的React知识体系

面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 我最终还是上岸了,花了3天总结了近万字的react知识体系思维导图,分享出来希望能帮助有缘人吧,以下只是部分截图&…

goldfish loss:减少训练数据泄漏,提高大语言模型输出的多样性

LLMs(大型语言模型)能够记忆并重复它们的训练数据,这可能会带来隐私和版权风险。为了减轻记忆现象,论文作者引入了一种名为"goldfish loss"的微妙修改,在训练过程中,随机抽样的一部分标记被排除在…