C++数组名和数组拷贝详解

数组名c++数组间赋值不能直接通过数组名称 randy = sesame进行,因为数组名并不是指针,大部分情况下,编译器会隐式转换为指向数组首元素的指针常量。
如果使用 sizeof(数组名),就会得到数组所占内存大小(每个元素大小 * 元素个数)
如果对数组名取地址 &数组名,表示数组的地址,其值与首元素地址相同。
具体看下图图示:
数组拷贝1.对应位拷贝#include 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;}结果:
21387psesame[4] 333. 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 -15203816964.字符数组拷贝int main() { char randy[6]={randy}; // 初始化字符格式不能超过5 char sesame[6]; strcpy(sesame,randy); std::cout < < randy < < std::endl; return 0;}这里注意,字符数组声明大小时,包括末尾的�,因为初始化的字符个数不能超过 声明大小 - 1

基于HTTP协议的数据交互功能实现构建数据采集方案
骁龙835处理器原型机曝光 小米6或全球首发
低功耗蓝牙信标已成为室内定位最佳选择
什么是2.5 Gb以太网?2.5 Gb以太网的优点
用数字万用表检测三极管的好坏
C++数组名和数组拷贝详解
如何进行物联网的以太网供电设备的设计
业内多位资深人士加入SiTime领导团队,促进其未来发展
接近传感器的选型以及故障排除
SmartClarity CMOS图像传感器系列再添新成员
IBM和Maersk合组企业 利用区块链处理货运
海内外VR生态环境差异巨大化,中国vr产业分析
再见,数据线;你好,即将到来的远距离无线充电
Lava已开始生产诺基亚品牌的智能手机
示波器有源探头附件的分类及电路结构
Creo零件的默认颜色能够修改吗?
微星MEGZ390ACE主板高清图赏
红外热成像技术在周界监控中的应用
TDA8361引脚功能图及引脚电压
小米手机终于不再耍猴了,新款小米6首发备货50万台