在 C++ 中将数组传递给函数

2023-12-01

#include <iostream>
using namespace std;

void printarray (int arg[], int length) {
    for (int n = 0; n < length; n++) {
        cout << arg[n] << " ";
        cout << "\n";
    }
}

int main ()
{
     int firstarray[] = {5, 10, 15};
     int secondarray[] = {2, 4, 6, 8, 10};
     printarray(firstarray, 3);
     printarray(secondarray, 5);

     return 0;
}

这段代码有效,但我想了解数组是如何传递的。

当拨打电话时printarray从主函数的函数中,正在传递数组的名称。数组的名称指的是数组第一个元素的地址。这如何等同于int arg[]?


语法

int[]

and

int[X] // Where X is a compile-time positive integer

完全一样

int*

当在函数参数列表中时(我省略了可选名称)。

此外,当传递给函数(而不是通过引用传递)时,数组名称会衰减为指向第一个元素的指针,因此两者int firstarray[3] and int secondarray[5]衰变到int*s.

也可能发生数组取消引用和指针取消引用都使用下标语法(下标语法是x[y]) 当您使用相同的索引时,会产生相同元素的左值。

这三个规则结合起来使代码合法并按您期望的方式工作;它只是将指针传递给函数,以及数组的长度,在数组衰减为指针后你无法知道数组的长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中将数组传递给函数 的相关文章

  • 使用 c11 标准和 clang 来使用 strcpy_s

    我正在运行 OS X Sierra 并尝试编译一个使用的 c 程序strcpy s 但是我安装的 clang 编译器使用的是 c99 标准 但是据我读到的 https embeddedgurus com barr code 2017 08
  • 不要覆盖 Azure Blob 存储

    我有一种将文件添加到 Azure Blob 存储的方法 问题是我试图指定一个条件 在该条件下它不会覆盖 blob 而只是添加到其中 我正在尝试使用参数访问条件 但是 VS 说这个方法不能采用两个参数 async void archiveNe
  • 如果我每次创建粒子时都强制重新初始化每个粒子,我是否应该使用粒子池

    我正在 XNA4 中创建一个粒子系统 但遇到了问题 我的第一个粒子系统是一个简单的粒子列表 其实例是在需要时创建的 但后来我读到了有关使用池的内容 我的第二个系统由一个充满粒子的池和一个发射器 控制器组成 我的池非常基本 这是代码 clas
  • 使用 C# 启动 Outlook

    我可以让 C 在代码中启动 Outlook 吗 在 VB6 中 我们使用对象 Outlook Application 并编写 Set oOutlook CreateObject Outlook Application Set oNameSp
  • 使用 Rhino Mocks 模拟集合

    所以我猜这是很多人想做的事情 模拟集合 过去我用 Rhino 做过这样的事情 var col mock MockRepository GenerateMock
  • std::string substr 方法问题

    你好 我正在写这个方法 我希望它从给定缓冲区中提取给定位置的一部分 我有一个像这样的字符串something one something two我想要得到 一个 这是我的想法 static std string Utils getHeade
  • 使用标准范围连接带有分隔符的字符串范围

    我想使用范围将跨度中包含的四个字节转换为字符串 这是输入和输出的示例 std span
  • 如何转换 UTF-8 <-> UTF16 可移植

    有没有一种简单 可移植的方法 至少是 win32 linux 将 UTF 16 转换为 UTF 8 并返回 最好使用升压 谢谢你的帮助 托比亚斯 Both libiconv http www gnu org software libicon
  • Makefile:如何正确包含头文件及其目录?

    我有以下 makefile CC g INC DIR StdCUtil CFLAGS c Wall I INC DIR DEPS split h all Lock o DBC o Trace o o cpp DEPS CC o lt CFL
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • Magento SOAP V2 API - 附加属性设置为空

    几个小时以来 我一直在尝试通过 SOAP V2 API 创建具有附加属性的产品 每当我打电话时就会添加该产品目录产品创建但我随请求发送的附加属性被设置为空 每当我不添加附加属性时 这两个属性都会设置为其默认值 因此我认为这些属性正在发送和接
  • 如何检查我的程序是否有数据通过管道传输到其中

    我正在编写一个应该通过标准输入读取输入的程序 所以我有以下结构 FILE fp stdin 但是 如果用户没有将任何内容通过管道传输到程序中 这就会挂起 我如何检查用户是否确实将数据通过管道传输到我的程序中 例如 gunzip c file
  • 从 ASP.NET Web API 返回 HTML

    如何从 ASP NET MVC Web API 控制器返回 HTML 我尝试了下面的代码 但由于未定义 Response Write 而出现编译错误 public class MyController ApiController HttpP
  • 通用 lambda 的数量

    可以通过访问非泛型 lambda 的数量来推断其数量operator template
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 如何使用 C# 以编程方式识别对方法的引用数量

    我最近继承了需要一些修剪和清理的 C 控制台应用程序 长话短说 该应用程序由一个包含超过 110 000 行代码的类组成 是的 单个类中有超过 110 000 行 当然 该应用程序是我们业务的核心 全天候运行更新动态网站上使用的数据 尽管我
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • 偏专业化朋友声明

    在下面的代码中 template
  • 编写一个转储屏幕像素的 RDP 客户端

    我想在中实现 RDP 客户端C 它能够获取屏幕所有像素的颜色值并将它们转储到文件中 我知道这在概念上与 RDP 的工作方式不同 但我的应用程序需要它 我正在尝试利用freerdp https github com FreeRDP FreeR
  • 阅读《Effective、MoreEffective 和Effective Modern C++(和 STL)》的首选顺序是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 据我所知 More effective C 是 Effective C 的扩展 而 Effective Modern C 则专注于 C 11 和

随机推荐

  • 如何在 Windows 8 应用程序中指定区域性的根本性改变

    来自 App cs 中的 OnLaunched 这是工作 Windows Globalization ApplicationLanguages PrimaryLanguageOverride da DK 但这些都不是 System Glob
  • Java 字符串字符编码 - 法语 - 荷兰语区域设置

    我有下面的代码 public static void main String args throws UnsupportedEncodingException System out println Charset defaultCharse
  • 为什么虚拟类的析构函数不自动添加到vtable中?

    当虚拟类 B 派生自虚拟基类 A 时 除非在 A 和 B 中显式声明虚拟析构函数 否则 vtable 中 B 的析构函数将指向 A 的析构函数 为什么 为什么 B 的 vtable 析构函数不自动指向 B 的析构函数 而无需定义 A 和 B
  • 根据多个分隔符分割字符串 [/, #, @, '']

    我想根据多个分隔符拆分字符串 如何将一个字符串拆分为多个字符串作为分隔符 例如 我有一个字符串 create channel name description of the channel field1 field2 我想要一个数组 cre
  • Java 摇摆;单击按钮后如何显示文本

    我想要 世界你好 当我的按钮被点击时显示 因此 转到下一个 框架 但在同一个窗口中 我尝试过卡片布局 但是谁能告诉我如何使用这段代码来做到这一点 我在这段代码中做错了什么 import javax swing JButton import
  • 如何在 python 中执行简单的“chmod +x”?

    我想从可执行的 python 脚本中创建一个文件 import os import stat os chmod somefile stat S IEXEC 它出现os chmod不会像 unix 那样 添加 权限chmod做 注释掉最后一行
  • 运行 git commit 时与编辑器相关的错误?

    运行 Git commit 时出现以下错误 c Program Files x86 Notepad notepad exe c line 0 syntax error near unexpected token c Program File
  • XSLFGroupShape 不包含其子形状

    我正在使用 Apache POI 3 16 撰写本文时的最新版本 在下面的代码片段中 我创建了一个 XSLFGroupShape 然后用它来创建一堆子形状 XSLFGroupShape group slide createGroup XSL
  • int64 是否限制 numpy 和 pandas 中的最大值?

    当 numpy 数组或 pandas 系列的类型为 int64 时 这是否会将单元格可以存储的最大值限制为某个值 例如 在python3中 int没有限制 numpy 或 pandas 中的 int64 有限制吗 Yes int64表示它使
  • 在 Firebase 中通过电子邮件查找 UID

    我首先尝试实例化数据库中的每个用户 如下所示 emails email email protected uid x 我很快发现我无法存储电子邮件 因为它有一个 and 我最初打算像这样进行用户查找 func userLookUpByEmai
  • Magento 1.7 按多个类别过滤产品

    我正在寻找一种方法来按当前类别和可选子类别过滤类别页面上返回的产品 到目前为止 我见过的每个解决方案都是 显示属于 a 类或 b 类的产品 我需要编辑哪个文件才能通过作为查询参数传递的附加可选类别 ID 例如 catfilter 32 看这
  • 停止 NSTimer 并关闭视图控制器(快速)

    我在用NSTimer在我的中查找更新firebase数据库 我已将代码放入我的viewDidLoad NSTimer scheduledTimerWithTimeInterval 5 0 target self selector selec
  • Leakcanary 使用 Otto 报告内存泄漏

    跟进我的最后一个问题 这是我无法摆脱的第二个内存泄漏 我读到我需要根据 Activity 和 Fragment 生命周期注册和注销我的静态 Otto 总线 因此我添加了对 onStop 和 onStart 的注册和注销调用 有一个按钮可以触
  • 如何对多列进行计数(不同)

    这不起作用 select count distinct colA colB from mytable 我知道我可以通过双重选择来简单地解决这个问题 select count from select distinct colA colB fr
  • ASP.NET:WCF 和无法加载文件或程序集“App_Web_hamznvwf”

    我最近开始使用支持 AJAX 的 WCF 并且一直受到这个 NET 缓存问题的困扰 无法加载文件或程序集 App Web hamznvwf 我的服务器每天会遇到 4 到 5 次这样的问题 Win 2003 看第一篇文章 因此 我将文件从服务
  • 远程服务器命令执行

    在远程服务器上执行 shell 命令并在不实际登录的情况下获取输出的最佳方法是什么 也许用 ssh 密钥 最好用python 你的意思是不登录manually 因为实际上允许您在根本不登录的情况下执行命令的服务器将带来巨大的安全风险 看起来
  • 使用 XML 数据类型读取存储在 SQL Server 2008 R2 中的 XML 文档

    我正在使用 SQL Server 2008 R2 和 ASP NET 3 5 我在 SQL 端以 XML 形式存储数据表 NET 列的数据类型为 XML 这是将 XML 存储在 SQL Server 的表列中的示例
  • 在 vb.net 中显示加载屏幕

    当长时间的进程正在运行时 我需要显示一个屏幕或其他内容 说 正在加载 或其他内容 我正在使用 Windows Media Encoder SDK 创建一个应用程序 需要一段时间来初始化编码器 我希望在启动编码器时弹出一个屏幕 显示 正在加载
  • AttachNotSupportedException:没有提供者安装 java 代理

    我在将 Java 应用程序附加到远程 Java 虚拟机时遇到问题 我在 Windows 7 上使用 java 8u45 并且我的附加代码非常简单 import java io IOException import java util Lis
  • 在 C++ 中将数组传递给函数

    include