C++中的数组与指针

数组与指针看起来很像

int a[] = {1, 2 ,3};

int *p = a;

如此,我们可以p[0], p[1], p[2]

看起来,与直接使用数组名没什么两样,但是看这段代码

sizeof(a)

sizeof(p)

你就会知道,原来数组里还隐含了大小信息,这是指针所不能做到的

严格的说,数组是一种内置的数据类型,C++标准对这种数据类型限定的某些行为使他看起来像

指针

1array are passed by reference by default

  这句话是说,我们可以将数组名赋给指针,将数组名放进函数参数中,则数组会退化成指针,再用sizeof得不到尺寸信息

     void func(int a[]);

  很多人以为这个函数只接受数组为参数,结果在函数内部sizeof(a)发现,它就是一指针int*,坑人

2array are not assignable

   这里最关键的是数组名不能作为左值,不管是用int a[3]声明的数组还是int a[] = new int[3];得到的数组

      在基本数据类型里,引用也具有这种"从一而终"的特性

3如何真正的传递数组(避免它退化成指针)

  看下面的函数原型

  void func(int(&a)[100]);

     这个函数只接受大小为100的整型数组,有没有发现,我们按引用类型来传参数,就能避免数组退化成指针

  当然这么写没什么用,毕竟一个只能传递定长数组的函数也只能看看而已

   利用c++模板编程的手法,可以这样子:

     template<size_t N>

     void func(int(&a)[N]);

      这样就能接受任意大小的数组了,而且只接受数组

转载于:https://www.cnblogs.com/hustxujinkang/p/4981751.html

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

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

相关文章

iic总线从机仲裁_I2C总线的仲裁问题

【问】有网友问关于I2C总线的仲裁问题&#xff1a;The I2C-bus specification的第13页有这样的话&#xff1a;In other words, arbitration isn’t allowed between:* A repeated START condition and a data bit* A STOP condition and a data bit* A repeated START conditio…

jvm 加载class文件过程

jvm 加载class文件分为装载-链接-初始化三个过程。 load -------->link verify prepare resolve ---------->initialize (类加载过程) bootstrap class Loader | | extenstion class loader | | system class Loader | | ----------- user-define user-define…

dvt高危患者的护理措施_dvt的预防及护理

DVT的预防措施高危患者预防深静脉血栓的护理措施一、深静脉血栓的预防对象 1.大手术病人&#xff1a;三类、四类手术病人。 2.高危患者&#xff1a;①年龄≥41 岁&#xff1b;②肥胖&#xff1b;③妊娠&#xff1b;④盆腔手术或关节置 换手术&#xff1b;⑤急诊剖腹产手术&…

java环境配置—配置Tomcat8环境

先安装JDK&#xff0c;配置好jdk环境后再配置Tomcat 8配置环境变量&#xff1a;TOMCAT_HOME&#xff1a;D:\Program Files\apache-tomcat-8.0.28  CATALINA_HOME:D:\Program Files\apache-tomcat-8.0.28  CATALINA_BASE:D:\Program Files\apache-tomcat-8.0.28修改CLASSPAT…

加密解密_作业-加密解密程序

# 加密解密程序作业&#xff1a;自己写一个加密程序&#xff0c;能够加密的内容是英文和汉字。同时加密并且解密就是说&#xff0c;一段话中既有中文又有英文&#xff0c;标点符号不用处理。加密规则&#xff0c;获取ascii码数字&#xff0c;中间用|分割# 思路提示&#xff1a;…

详解Objective-C中委托和协议

Objective-C委托和协议本没有任何关系&#xff0c;协议如前所述&#xff0c;就是起到C中纯虚类的作用&#xff0c;对于“委托”则和协议没有关系&#xff0c;只是我们经常利用协议还实现委托的机制&#xff0c;其实不用协议也完全可以实现委托。 AD&#xff1a;【活动】Web和AP…

svn拉取文件合并_SVN分支(branches)合并(merge)到主干(trunk)和拉取分支(tag)

在一个团队协作且不断迭代更新的项目开发中&#xff0c;经常会使用到svn的一些分支主干的方法&#xff0c;这样的好处是使得各个版本之间可独立开发&#xff0c;大多数情况下是branch分支主要用来开发新的功能和版本迭代&#xff0c;主干上面及时快速的修复线上的一些bug和优化…

Unable to load native-hadoop library解决思路

最近试着搭建Hadoop&#xff0c;我使用的操作系统是Centos6.5&#xff0c;Hadoop版本是2.6.0。 在安装过程中总是出现&#xff1a;WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable。 解决…

ios13苹方字体ttf_字体 | iOS1013 SF Compact Rounded 英文 By alex

最近沉迷游戏&#xff0c;差点忘记了这个英文。嗨呀&#xff0c;问就是在玩了&#xff0c;啊不&#xff0c;在做了。这个英文来自推特alexman&#xff0c;原版包含100和85大小&#xff0c;本次分享新增到了100-60&#xff0c;每5%一个大小。gzh分享已经获得alex授权&#xff0c…

Rust 中的继承与代码复用

Rust 中的继承与代码复用 在学习Rust过程中突然想到怎么实现继承&#xff0c;特别是用于代码复用的继承&#xff0c;于是在网上查了查&#xff0c;发现不是那么简单的。 C的继承 首先看看c中是如何做的。 例如要做一个场景结点的Node类和一个Sprite类继承它。 定义一个node基类…

怎么将自己的头像p到特定的背景图_【后期修图】photoshop手把手教你制作属于自己的酷炫的微信头像...

原标题&#xff1a;【后期修图】photoshop手把手教你制作属于自己的酷炫的微信头像效果图先放上1.新建一个白色的背景&#xff0c;这里是1080*720的。然后在图层面板下面单击创建新的调整图层/渐变&#xff0c;设 置 好渐变参数&#xff1a;黑白渐变&#xff0c;径向&#xff0…

10双屏鼠标过不去_灵耀X2 Duo双屏笔记本是怎样“炼”成的?对话华硕笔记本设计团队...

2020年的CES上&#xff0c;华硕推出了一款灵耀X2 Duo笔记本&#xff0c;灵耀X2 Duo采用了和灵耀X2 Pro相同的屏幕技术&#xff0c;C面同样采用了一块ScreenPad Plus副屏&#xff0c;机身也更轻更薄。如今灵耀X2 Duo的处理器升级至英特尔第十代酷睿&#xff0c;正在参与“618”大…

powershell加win的dns服务器,解决网站负载均衡问题

用我发明的powershell填坑法&#xff0c;加windows的dns服务器。从调整dns服务器解析ip时间段的角度&#xff0c;解决网站负载均衡问题。 ------------------------win2012r2中&#xff0c;用powershell管理dns服务器的&#xff0c;命令列表-------------------------------- 共…

csv python 只写一次_在Python CSV Writer循环中写入一次头

下面是一个scraper&#xff0c;它遍历两个网站&#xff0c;获取团队的花名册信息&#xff0c;将信息放入一个数组中&#xff0c;然后将数组导出到CSV文件中。一切都很好&#xff0c;但唯一的问题是每次scraper移动到第二个网站时&#xff0c;csv文件中的writerow头会重复出现。…

理解 OpenStack 高可用(HA) (6): MySQL HA

本系列会分析OpenStack 的高可用性&#xff08;HA&#xff09;概念和解决方案&#xff1a; &#xff08;1&#xff09;OpenStack 高可用方案概述 &#xff08;2&#xff09;Neutron L3 Agent HA - VRRP &#xff08;虚拟路由冗余协议&#xff09; &#xff08;3&#xff09;Neu…

聚类中心坐标公式如何使用_如何使用CAD看图软件来测量坐标?

当我们在拿到图纸的时候&#xff0c;经常会需要使用测量工具&#xff0c;再次测量dwg图纸上的数据。浩辰CAD看图王软件&#xff0c;不仅可以看图&#xff0c;也可以编辑图纸&#xff0c;测量功能更是很方便&#xff0c;当我们在测量的时候&#xff0c;如何测量图纸上点的坐标呢…

linunx 定位最耗资源的进程

[oracletopbox bdump]$ ps -ef|grep “(LOCALNO)”|sort -rn -k 8,8|head -10oracle 9402 1 67 09:18 ? 00:43:09 oracletopbox (LOCALNO)oracle 15524 12159 0 10:21 pts/2 00:00:00 grep (LOCALNO)oracle 15519 1 0 10:20 ? 00:00:00 or…

德利捷读码器设置软件_S7-1500PLC+变频器+编码器组成位置控制系统

PLC学习中组成部分&#xff1a;位置控制、力矩控制、惯量控制。位置控制模式S7-1500 的运动控制功能支持轴的定位和移动&#xff0c;是 S7-1500 系列 CPU 众多集成功能中的重要组成部分。运动控制功能支持旋转轴、定位轴、同步轴和外部编码器等工艺对象。根据PLC-Open&#xff…

解决 c3p0 和 MySQL 集成情况下,连接长时间闲置后重新使用时报错的问题

MySQL 的默认设置下&#xff0c;当一个连接的空闲时间超过8小时后&#xff0c;MySQL 就会断开该连接&#xff0c;而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下&#xff0c;如果客户端代码向 c3p0 连接池请求连接的话&#xff0c;连接池就会把已经失效的连接返回给…

汇编语言基础知识摘要(《汇编语言》王爽)第 1 / 17 章

CPU&#xff0c;是计算机的核心部件&#xff0c;它控制整个计算机的运作并进行运算。存储器&#xff0c;即内存&#xff0c;存放CPU需要的指令和数据。寄存器&#xff0c;是CPU中可以储存数据的器件&#xff0c;一个CPU中有多个寄存器。汇编语言由以下3类指令组成&#xff1a; …