首页 > 编程语言 >为什么C++中不能将数组的内容拷贝给其他数组作为初始值,也不能用数组给其他数组赋值

为什么C++中不能将数组的内容拷贝给其他数组作为初始值,也不能用数组给其他数组赋值

时间:2024-04-09 10:34:42浏览次数:29  
标签:初始值 C++ 数组名 复制 数组 赋值 指针

0 前言

来自primer的3.5部分

以下写法是有问题的

int a[] = {0,1,2}
int a2[] = a;    // 错误,不允许使用一个数组初始化另一个数组
a2 = a;        // 错误:不能把一个数组赋值给另一个数组

有些编译器支持上面的操作,但是书上说这属于非标准功能,是编译器扩展

1 原因

C++中的数组是一种固定大小的容器,其大小在编译时必须是已知的,而且数组名会被转换成指向其首元素的指针。

  1. 大小问题:目标数组的大小必须与源数组的大小相同,否则就无法直接赋值。如果两数组大小不一样,那么就会出现数组越界或者数据丢失
  2. 类型问题:数组名会转换成指针,因此你不能简单地将一个指针赋值给另一个指针来复制数组的内容,如果是指针赋值,那么两个数组名就共享同一片内存,那么就不是我们想要的复制一个新数组了。
  3. 数组是非可复制的:C++中的数组是非可复制的,它们没有内置的复制构造函数或赋值操作符,因此无法直接进行数组之间的复制。

标签:初始值,C++,数组名,复制,数组,赋值,指针
From: https://www.cnblogs.com/jye159X/p/18123323

相关文章

  • JS数组方法
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录@[TOC](文章目录)一、改变数组内容的方法1、push():向数组的末尾添加一个或多个元素,并返回新的长度。2、pop():删除并返回数组的最后一个元素。3、shift():删除并返回数组的第一个元素。4、un......
  • C++与Qt中回调函数的两种实现方法
    一.回调函数介绍1.概念回调函数是一种在程序运行期间通过函数指针调用的函数,它通常用于实现事件驱动、异步通信、消息传递等功能。在回调函数中,被调用的函数通常称为回调函数(CallbackFunction),而调用回调函数的函数通常称为回调函数容器(CallbackContainer)。回调函数容器可......
  • 20240408,C++数组,函数,指针
    是谁说回老家学习结果摆烂了两天,是我,Π—Π! Π—Π!! 一,数组——同C1.1一维数组1.0  相同类型,连续内存,1.1  定义格式:数据类型数组名【长度】;数组类型数组名【长度】={1,2,3,……};数组类型数组名【】={1,2,3,……};1.2  遍历数组,初始化,下标【0-N】1.3  数组名:数......
  • 【C++对C语言的拓展】引用--3
    1.8指针引用#include <iostream>usingnamespace std; struct Teacher { char name[64]; int age ; }; //在被调⽤用函数获取资源int getTeacher(Teacher **p) {     Teacher *tmp = NULL; if (p == NULL)......
  • 13、普通数组-最大子数组和
     思路卡登算法(Kadane'sAlgorithm)是一种用于解决“最大子数组和”问题的高效算法。这个问题的目标是在一个整数数组中找到具有最大和的连续子数组。卡登算法的美妙之处在于它的简洁性和高效性——它可以在单次遍历中解决问题,时间复杂度为O(n),其中n是数组的长度。基本概......
  • C++奇迹之旅:我与类和对象相遇
    文章目录......
  • C++ 入门一
    C++入门一1.C++关键字2.命名空间2.1命名空间定义2.2命名空间使用3.C++输入&输出C++是一种高级编程语言,由BjarneStroustrup在20世纪80年代初期在贝尔实验室开发。它是对C语言的扩展,添加了面向对象编程的特性,如类和对象、继承、多态和封装。C++支持多种编程范式,......
  • 【简单讲解下C++max函数的使用】
    ......
  • react 函数组件和hook
    函数组件1.函数组件没有生命周期2.函数组件没有this3.函数组件通过hook完成各种操作4.函数组件本身就是render函数5.props在函数第一个参数解释useState参考https://www.cnblogs.com/ssszjh/p/14581014.htmlprops参考https://www.cnblogs.com/ssszjh/p/18118746生命周期......
  • C++中lambda表达式介绍
    c++在c++11标准中引入了lambda表达式,一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。什么是Lambda表达式最常见的lambda的表达式写法如下autoplus=[](intv1,int......