c++之指针
总结性质
我们如何在一个函数中获取数组的长度:
我们都知道,在main函数中我们获得数组的长度只需要使用sizeof(a)/sizeof(a【0】)即可获得,但当我们把一个数组传入到方法时,c++默认把数组地址视为一个指针,在64位系统下c++默认一个指针为8字节在使用上述方法只会得到8字节除以4字节(因为c++把数组首地址视为指针一个指针8字节,而int类型占四字节),所以我们要传数组时也必须把数组的长度传入。
验证:
#include<bits/stdc++.h>
using namespace std;
void sss(int a[]){cout<<sizeof(a)<<endl;cout<<sizeof(a[0]);
}
int main(){int a[]={1,2,3};cout<<sizeof(a)/sizeof(a[0])<<endl;sss(a);return 0;
}

结果很明显了,在main函数里边是3,一到函数里面是8,就是由于它被压缩成了一个指针。在64位系统中一个指针被默认位8字节。
我们如何定义一个函数返回一个数组
问及这个问题,不得不谈c++的函数返回值里无法返回数组类型,那我们怎么办,我们使用指针,我们通过返回指针类型的变量,使用指针来访问数组。但是当我们在函数中开辟一个指针来存储数值时,当我们的函数结束,我们在函数里开辟的指针地址会失效被回收,这就牵扯了一个问题,即使我们已经把指针地址传给了main函数里的指针时,当原指针的地址被回收时,我们仍无法通过指针来访问值了,怎么办?办法有,,可以使用动态分配内存的方式来解决问题,动态分配的内存直到我们手动delete时才会被回收。
代码:
#include<bits/stdc++.h>
using namespace std;
int* sss(int* a,int b){int* c=new int[b+1];int d;for(d=0;d<b+1;d++){if(d!=b){c[d]=a[d];}else{c[d]=67;}}return c;
}
int main(){int a[]={1,2,3};
int* b=sss(a,3);
for(int c=0;c<4;c++){cout<<b[c]<<endl;
}
delete[] b;return 0;
}
结果:

大家可以看到我们通过动态内存开辟的地址返回后并未被删除,不过需要我们手动delete删除释放内存。
好啦,这就是我们使用指针来返回数组的知识。
额外阐释那个一下c++的内存机制把。
我们把c++的内存分为三块,栈内存,堆内存,全局内存
我们所写的main函数以及我们自定义的函数都是在栈内存中,一旦我们的函数结束,系统会自动回收内存,但是我们开的new之类的那个动态内存会保存在堆空间中,只有我们手动delete才会删除而系统不会帮你自动删除,而全局变量则是我们开在main函数外边和我们使用static来修饰的变量,它会在我们执行完main函数之后自动回收。
这不就得吐槽一下c++的内存坏处了,我们使用Java的引用数据类型也是自动开辟在堆区的,它不用我们自动回收,Java底层有回收机制。我们只要记住我们在Java中自定义的方法使用的基本数据类型会随着方法结束而回收,Java的垃圾回收机制异常复杂,不在这里赘述(其实是作者也不会,流汗😓)。不过我们只要直到引用数据类型只要有变量接受便不会被清楚,所以我们在Java可以返回数组的地址
相关文章:
c++之指针
总结性质 我们如何在一个函数中获取数组的长度: 我们都知道,在main函数中我们获得数组的长度只需要使用sizeof(a)/sizeof(a【0】)即可获得,但当我们把一个数组传入到方法时,c默认把…...
JVM 访问对象的两种方式
Java 程序会通过栈上的 reference 数据来操作堆上的具体对象。由于 reference 类型在《Java 虚拟机规范》里面只规定了它是一个指向对象的引用,并没有定义这个引用应该通过什么方式去定位、访问到堆中对象的具体位置,所以对象访问方式也是由虚拟机实现而…...
yo!这里是Linux基础开发工具介绍
目录 前言 基础开发工具 yum vim 1.基本介绍 2.基本操作 3.正常模式常用命令 4.底行模式常用命令 gcc/g gdb 1.基本介绍 2.常用操作 make/Makefile 1.背景 2.介绍 3.使用 git 1.介绍 2.操作 进度条程序简单实现 后记 前言 在学完初步的基础指令及权限控…...
本地组策略编辑器找不到怎么解决?| 解决windows home 版本隐藏本地组策略编辑器的问题 | 简单的介绍本地组策略编辑器
一般的 Windows 非家庭系统中,本地组策略编辑器不会被隐藏,但在某些特定情况下,可能会受到限制或不可用。如果你无法访问本地组策略编辑器,并且认为应该可以访问,请确保你拥有管理员权限,并检查是否有任何系…...
将Spring boot 项目部署到tomcat服务艰难
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z X Y Z...
第十二章 ObjectScript - 命令
文章目录 第十二章 ObjectScript - 命令命令熟悉的命令用于多维数组的命令 第十二章 ObjectScript - 命令 命令 本节概述了在 ObjectScript 常用命令。其中包括与其他语言中的命令相似的命令,以及其他语言中没有等效项的其他命令。 命令名称不区分大小写…...
在 CentOS 7 / RHEL 7 上安装 OpenSSL 1.1.x
OpenSSL 是一个开源软件库,由用于实现传输层安全 (TLS) 和安全套接字层 (SSL) 协议以及其他加密功能(例如签名、加密、解密和验证)的工具和库组成。操作系统和许多应用程序使用 OpenSSL 通过互联网提供安全通信。 CentOS 7 / RHEL 7 操作系统…...
论文阅读_模型结构_LoRA
name_en: LoRA: Low-Rank Adaptation of Large Language Models name_ch: LORA:大语言模型的低阶自适应 paper_addr: http://arxiv.org/abs/2106.09685 date_read: 2023-08-17 date_publish: 2021-10-16 tags: [‘深度学习’,‘大模型’] author: Edward J. Hu cita…...
uniapp获取 pdf文件流 并展示
1、流数据 uni.request({ url: this.$config.apiUrl“/api/report/content/fill?codebv.mf.refund.pay.voucher&busiNo00201323051500148949”, header: { ‘content-type’: ‘application/json;charsetutf-8’, ‘X-App-Code’: ‘weixin’, ‘X-Source’: ‘program’,…...
Linux(进程间通信)
目录 一、通信概念 二、进程间通信机制 1、管道 1.1 匿名管道(Anonymous Pipe) 1.2 命名管道(Named Pipe) 2、信号量 2.1 概念 2.2 API详解 2.3 使用示例 3、消息队列 3.1 概念 3.2 API函数 3.3 应用代码 4、共享内…...
Go的Gorm数据库操作错误WHERE conditions required
这是我在写这个代码处出现的问题 result : db.Save(&emergency) 这个错误是由于在提交保存数据时,GORM 需要指定 WHERE 条件,确保能够正确执行数据库操作。要解决这个问题,可以尝试使用 Create 方法替换 Save 方法,同时将创…...
基于java swing和mysql实现的仓库商品管理系统(源码+数据库+运行指导视频)
一、项目简介 本项目是一套基于java swing和mysql实现的仓库商品管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经…...
6、css学习6(表格)
1、指定CSS表格边框,使用border属性。 2、表格双边框是因为th/td有各自独立的边框。 3、boder-collapse设置表格边框是否被折叠成一个单一的边框。 4、width和height属性定义表格的宽度和高度。 5、text-align属性设置水平对齐方式。 6、vertic-align属性设置垂…...
Ceph源码解析:PG peering
集群中的设备异常(异常OSD的添加删除操作),会导致PG的各个副本间出现数据的不一致现象,这时就需要进行数据的恢复,让所有的副本都达到一致的状态。 一、OSD的故障和处理办法: 1. OSD的故障种类: 故障A:一…...
解决jupyter notebook可以使用pytorch而Pycharm不能使用pytorch的问题
之前我是用的这个目录下的Python 开始更新目录 1、 2、 3、...
对建造者模式理解
当对象成员变量太多时,使用建造方法给变量赋值往往变得很臃肿,所以可以这样做 public class Something {private String a;private String b;private String c;private String d;private String e;public Something(Builder builder) {this.a builder.…...
回归预测 | MATLAB实现CSO-ELM布谷鸟算法优化极限学习机多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现CSO-ELM布谷鸟算法优化极限学习机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现CSO-ELM布谷鸟算法优化极限学习机多输入单输出回归预测(多指标,多图)效果一览基本介…...
静态链接库和动态链接库的区别
C静态链接库(Static Linking)和动态链接库(Dynamic Linking)的主要区别在于代码的组织和加载方式。 静态链接库 在编译时将库的代码和应用程序的代码合并在一起,生成一个单独的可执行文件。执行文件独立包含所需的库…...
使用 python 源码搭建 conda 环境
今天需要使用 python 2.6.8 的环境,发现 conda 设置成清华源后,没有旧版本了。所以打算从官网上下载一份 python 进行安装, 结果发现,conda 不能直接安装离线包(也可能我没找到方法),经过一番尝…...
dart 学习之 异步操作
import package:dio/dio.dart;// 定义一个异步函数,用于获取 URL 的内容 Future<String> getUrl(String url) async {Dio dio Dio();Response response await dio.get(url);return response.data; }void main() async {// 在主函数中执行异步操作var conten…...
Wan2.2-I2V-A14B惊艳案例:动态水墨山水+古风人物行走10秒视频生成
Wan2.2-I2V-A14B惊艳案例:动态水墨山水古风人物行走10秒视频生成 1. 开篇:当AI遇见传统水墨艺术 想象一下,你只需要输入一段文字描述,就能让AI生成一段10秒的动态水墨山水视频,画中还有古风人物悠然行走。这不是科幻…...
嵌入式老鸟总结:Keil警告L15/L16的隐藏陷阱与RTOS适配技巧
Keil多任务开发中的L15/L16警告:从RTOS视角看函数重入与资源竞争 在嵌入式开发中,Keil编译器的L15(MULTIPLE CALL TO SEGMENT)和L16(UNCALLED SEGMENT)警告常常被开发者忽视,但在RTOS环境下&…...
剑指offer-58、对称二叉树
题⽬描述 请实现⼀个函数,⽤来判断⼀棵⼆叉树是不是对称的。注意,如果⼀个⼆叉树同此⼆叉树的镜像是同样 的,定义其为对称的。 例如:下⾯这棵⼆叉树是对称的 下⾯这个就不是对称的: 示例1 输⼊:{8,6,6,5…...
NVMe 2.0 Boot Partitions:解锁高效固件更新的双分区机制
1. 为什么我们需要NVMe 2.0的双启动分区? 想象一下你正在给手机升级系统,突然断电了——传统单分区方案会让设备直接变砖,而NVMe 2.0的双启动分区就像给系统上了双保险。这个设计最初是为了解决企业级SSD在724小时运行时的固件更新难题&#…...
pg_dump备份报错:Only syssso can access this table
文章目录环境症状问题原因解决方案环境 系统平台:N/A 版本:4.5.8 症状 使用pg_dump对数据库进行备份时报错: pg_dump:error:query failed:ERROR: Only syssso can access this table. pg_dump:error:query was: SELECT label, provider, …...
Guardrails未来版本路线图:10大新功能全面展望与AI安全演进
Guardrails未来版本路线图:10大新功能全面展望与AI安全演进 【免费下载链接】guardrails Adding guardrails to large language models. 项目地址: https://gitcode.com/gh_mirrors/gu/guardrails 在大型语言模型(LLM)应用日益普及的今…...
2026大厂校招笔试指南(高频考点+真实趋势)
关注 霍格沃兹测试学院公众号,回复「资料」,领取人工智能测试开发技术合集很多人现在卡在同一个问题上:题也刷了,时间也花了,但一到笔试还是过不了。你可能也有这种感觉:简单题会做,中等题卡住&…...
从检测到分析:手机位置热力图生成与行为模式挖掘扩展方案
从检测到分析:手机位置热力图生成与行为模式挖掘扩展方案 1. 引言:从“看见”到“看懂” 想象一下,你在一间大型会议室里,墙上挂着十几个监控摄像头。传统的监控系统能告诉你“画面里有手机”,但仅此而已。你无法知道…...
iperf3网络性能测试工具完全指南:从安装到企业级应用
iperf3网络性能测试工具完全指南:从安装到企业级应用 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 在当今数字化时代,网络…...
大模型加载优化二选一:DeepSpeed Zero-3 vs Hugging Face device_map,我该如何抉择?
大模型加载优化二选一:DeepSpeed Zero-3 vs Hugging Face device_map,我该如何抉择? 在资源受限的环境下运行大型语言模型(LLM)时,内存优化策略的选择往往决定了项目的成败。面对动辄数十亿参数的模型&…...
