C++ | 数组拷贝

news2024/10/6 12:22:02

C++ | 数组拷贝

文章目录

  • C++ | 数组拷贝
    • 数组名
    • 数组拷贝
      • 1.对应位拷贝
      • 2.地址位移赋值
      • 3. memcpy内存拷贝
      • 4.字符数组拷贝
    • Reference

数组名

C++数组间赋值不能直接通过数组名称 randy = sesame进行,因为数组名并不是指针,大部分情况下,编译器会隐式转换为指向数组首元素的指针常量。

如果使用 sizeof(数组名),就会得到数组所占内存大小(每个元素大小 * 元素个数)

如果对数组名取地址 &数组名,表示数组的地址,其值与首元素地址相同。

具体看下图图示:

数组拷贝

1.对应位拷贝

#include <iostream>

void Print(int array[], int num) {
  for (size_t i = 0; i < num; i++) {
    std::cout << array[i] << " ";
  }
  std::cout << std::endl;
}

int main() {
  int randy[5] = {2, 1, 3, 8, 7};
  int sesame[5];
  for (int i = 0; i < 5; i++) {
    sesame[i] = randy[i];
  }

  Print(sesame, 5);

  return 0;
}

2.地址位移赋值

int main() {
  int randy[5] = {2, 1, 3, 8, 7};
  int *pSesame = new int[5];  //指针变量
  pSesame = randy;
  for (int i = 0; i < 5; i++) {
    std::cout << *(pSesame + i) << std::endl;
  }
  randy[4] = 33;
  std::cout << "pSesame[4] " << *(pSesame + 4) << std::endl;
  pSesame = nullptr;

  return 0;
}

结果:

2
1
3
8
7
pSesame[4] 33

3. memcpy内存拷贝

int main() {
  int randy[5] = {2, 1, 3, 8, 7};
  int sesame[5];
  memcpy(sesame, randy, sizeof(randy));
  Print(sesame, 5);

  int qcj[7];
  memcpy(qcj, randy, sizeof(randy));
  Print(qcj, 7);

  return 0;
}

结果:

2 1 3 8 7 
2 1 3 8 7 0 -1520381696 

4.字符数组拷贝

int main() {
    char randy[6]={"randy"}; // 初始化字符格式不能超过5
    char sesame[6];
    strcpy(sesame,randy);
    std::cout << randy << std::endl;

  return 0;
}

这里注意,字符数组声明大小时,包括末尾的\0,因为初始化的字符个数不能超过 声明大小 - 1

Reference

  • C++/C的数组名到底是什么?
  • 数组之间不能直接赋值,为什么?赋值有四种方法

欢迎关注公众号【三戒纪元】

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用nvm 管理node.js版本的安装过程

一个 nodejs 版本管理工具&#xff01;—— nvm 在项目开发过程中&#xff0c;随着框架的不断更新迭代&#xff0c;对一些环境依赖的版本也有影响&#xff0c;部分的老项目可能需要低版本的 node.js 才能正常使用&#xff0c;而后期新开发的项目可能需要更高的 node.js 版本才…

都说2023是测试员的危机年,却不断有人跳槽拿20K+,为什么?

从 2021 年上旬开始触发的经济危机逐渐蔓延到普通人的生活中&#xff0c;裁员、倒闭、跑路俨然已成为刷爆朋友圈的高频热词。随之而来的是一系列因舆论所牵动的各种焦虑感弥漫在人群中&#xff0c;无论是大公司还是之前处于风口浪尖的明星创业公司&#xff0c;几乎无一幸免。聊…

ANR实战案例3 - 应用在部分低端机ANR优化案例

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、Blocked状态1.案例一2.案例二3.案例三 二、高低端机区分1.WebView预加载 三、…

Flink基础介绍-2 架构

Flink基础介绍-1 概述 二、Flink架构2.1 Flink的设计架构2.2 Flink的运行架构2.3 Flink的系统架构 二、Flink架构 2.1 Flink的设计架构 Flink是一个分层的架构系统&#xff0c;每一层所包含的组件都提供了特定的抽象&#xff0c;用来服务于上层组件&#xff0c;Flink的分层体…

搬家货运系统软件开发功能

生活中要用到搬家的场景很多&#xff0c;租房子、买房子、换房子都要搬家&#xff0c;不管是从时间还是专业性上来说&#xff0c;很多人都更愿意找专业的搬家公司来代为处理&#xff0c;于是市面上出现了各类各样的货运搬家软件&#xff0c;让有需求的用户可以直接在线预约搬家…

Java实现网上人才招聘系统【附源码】

网上人才招聘系统 1、概述 3 2、系统分析 4 2.1、问题定义 4 2.2、可行性研究 4 2.2.1、可行性需求分析 4 2.2.2、数据流分析 5 2.2.3、数据字典 6 2.2.4、程序流程图 6 2.2.4、开发进度计划 6 2.3、需求分析 7 2.3.1、功能需求分析 7 2.3.2、数据需求分析 10 2.3.3、性能需求…

Dozer拷贝DO到VO

DO&#xff1a; data object 查出来的数据 VO&#xff1a; value object 要展示的数据&#xff0c;返回给前端的数据 DO查出来的字段比较多&#xff0c;VO过滤一下返回给前端 工具类Dozer <dependency><groupId>com.github.dozermapper</groupId><arti…

Vue3 router路由跳转传参Json数据,隐藏参数Url不显示跳转内容,使用History 来写,setup语法糖的写法

前言&#xff1a;Vue3中 Router的自2022-8-22 日后不能使用 params传参 —— 可以这么写&#xff0c;但是接收的时候会是空值 —— query可以用但不能用隐藏Url地址内的值&#xff0c;所以我们用History来写 history敲不出来的可以看最下面 这个相当于history模式父级调到子集后…

Linux文本三剑客之~~~awk 详细讲解 与date粗略讲解

目录 一. awk工作原理&#xff1a;1.1命令格式:1.2 awk常见的内建变量(可直接用)如下所示: 二 实验示例2.1 按行输出文本2.2按字段输出文本2.3 通过管道符双引号调用shell命令 date命令 一. awk工作原理&#xff1a; 逐行读取文本&#xff0c;默认以空格或tab键为分隔符进行分…

软件测试月薪2万,需要技术达到什么水平?

最近跟朋友在一起聚会的时候&#xff0c;提了一个问题&#xff0c;说一个软件测试工程师如何能月薪达到二万&#xff0c;技术水平需要达到什么程度&#xff1f;人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的&#xff0c;小公司或者非互联网企业拿二万的不太可…

网络性能监控(NPM)工具

网络是每个企业的支柱。即使在小型或企业级企业中&#xff0c;网络中断期间的生产力损失也可能导致巨大的损失。网络监控解决方案可帮助您预测潜在的中断并主动解决网络问题。这有助于维护无拥塞网络&#xff0c;使您的业务保持正常运行。这可以在网络监控工具的帮助下实现。网…

spring boot 完整后端接口案例

第一章 会员管理项目父模块搭建 1.1 创建模块mengxuegu-member mengxuegu-member 作为所有工程的父工程&#xff0c;用于管理项目的所有依赖。 1.2 添加pom依赖&#xff0c;pom.xml 文件位于&#xff1a;会员管理系统/03-配套资料/pom文件/member-pom.xml <?xml version&…

自建minio实现doris的快速备份与恢复

一.概述 doris支持通过腾讯云bos、阿里云oss、hdfs实现备份与恢复&#xff0c;但是我们公司doris部署在线下机房&#xff0c;如采用oss/bos, 大数据备份与恢复比较慢&#xff0c;会占用一定的带宽&#xff0c;如采用hdfs&#xff0c;担心小文件太多影响现有的hadoop集群。为了保…

C# Forecast 预测数据方法,MathNet.Numerics学习分享

Forecast 数据预测 /// <summary>/// 数据预测/// </summary>/// <param name"xValues">数据序列</param>/// <param name"yValues">数据值</param>/// <param name"forecastPoint">第N个预测序列<…

腾讯面试经验,岗位是C++后端

分享一篇腾讯面经&#xff0c;岗位是C后端&#xff0c;考察的内容是C、Redis、网络。 c shared_ptr的原理 答&#xff1a;内部的共享数据和引用计数实现 补充&#xff1a; shared_ptr多个指针指向相同的对象。shared_ptr使用引用计数&#xff0c;每一个shared_ptr的拷贝都…

【瑞萨RA系列FSP库开发】RASC+Keil的环境搭建

文章目录 一、获取资源包二、安装 Keil 软件、RA 芯片包和 RASC三、RASC 集成到 Keil四、使用 RASC 生成 Keil 工程五、通过 Keil 打开 RASC 的 FSP 配置器界面六、配置和编译 Keil 工程七、使用调试器下载程序 本节将介绍如何在Keil上开发瑞萨RA MCU &#xff08;如需了解 e2 …

元宇宙虚拟展馆和VR的关系与区别

元宇宙是指一个数字化的虚拟世界&#xff0c;这个世界由虚拟现实、增强现实等多种技术构建而成。这个世界中&#xff0c;人们可以用虚拟身份在其中自由穿梭&#xff0c;享受到与现实世界不同的多样化和极致体验。虚拟现实&#xff08;VR&#xff09;则是一种技术手段&#xff0…

一文吃透3类CSS复合选择器【案例演示】

书写CSS样式表时&#xff0c;可以使用CSS基础选择器选中HTML元素。但是在实际网站开发中&#xff0c;一个网页可能包含成千上万的HTML元素&#xff0c;如果仅使用CSS基础选择器是远远不够的。为此&#xff0c;CSS提供了儿种复合选择器&#xff0c;实现了更强、更方便的选择功能…

云原生技术的个人总结

文章目录 云原生概念Kubernetes容器和微服务k8s 服务网格边缘计算云边端 云原生概念 重点在以下三个方面 应用容器化面向微服务架构应用支持容器的编排调度 介绍&#xff1a; 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段&#xff0c;…

公网远程访问公司管家婆ERP进销存管理系统 - 无需公网IP

文章目录 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件&#xff0c;历经十余年市场的洗礼&#xff0c;深受广大中小企业的欢迎&#xff0c;在国内及…