为什么对于某些数组 A,sizeof(A) 在函数内不起作用? [复制]

2024-07-01

下列

#include <iostream>

void printArraySize ( int * arr ) 
{
    std::cout << sizeof(arr)/sizeof(int);

}

int main () 
{
    int arr [] = {1, 2, 3, 69203};
    printArraySize(arr);  
    return 0;
}

outputs 1(证明:http://codepad.org/yKG3mZIz http://codepad.org/yKG3mZIz)。解释一下这个废话。数组进入函数后会忘记其大小吗?据我了解,传入arr,一个内存地址,一个数字,只是意味着复制该数字。所以sizeof(arr)/sizeof(int)在函数内部和外部应该意味着相同的事情。


In main, arr是一个数组并且sizeof产生数组的大小。

In printArraySize, arr是一个指向int and sizeof产生指针的大小int object.

在 C 中,不能(直接)将数组传递给函数,只能传递指向数组第一个元素的指针。获取数组的大小printArraySize您需要将其作为参数显式传递给函数。

在 C++ 中,您可以通过引用传递 C 数组,但您不应该首先使用 C 数组,而应使用std::array or std::vector反而。

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

为什么对于某些数组 A,sizeof(A) 在函数内不起作用? [复制] 的相关文章

  • std::map - 元素访问无异常且无插入

    我有一个使用 std map 的循环模式 我只想在键存在时检索值 否则我不想插入元素 目前我正在使用count key or find key 哪一个更好 从文档来看 复杂性似乎是相同的 如果它们返回一个正值 我就可以访问地图 但是我想避免
  • 如何在 C# 中检查互联网连接是否可用

    我为一家公司开发了一个软件 出于某种许可目的 我使用远程数据库来允许 禁止使用该软件 每次用户登录软件时都会应用此任务 如果互联网连接不存在或对远程数据库的查询失败 用户会收到错误 他无法登录软件并显示远程数据库http地址 我不希望他看到
  • 策略模式与依赖注入

    策略模式与依赖注入有何不同 即以下是您可以使用策略模式执行的操作 class Foo private readonly ISortAlgo sortAlgo public Foo ISortAlgo sortAlgo sortAlgo so
  • 规避模板专业化

    假设我是某个模板库的用户 CTL 它定义了一个模板 命名为 Hector template
  • 浮点指令异常——FLDZ故障?

    I am trying to debug the problem I posted earlier here C and pin tool very weird DOUBLE variable issue with IF statement
  • 将数据路径数据到树状数据结构

    我有以下数据 root root blue root blue temp root main root main dev root main back root etc init root etc init dev root etc ini
  • UWP 导航 (Template10)、枢轴控制、多帧

    我正在尝试在我的 UWP 应用程序中实现以下导航样式 使用 Template10 但正在努力如何使用多个帧作为独立的历史堆栈 在枢轴的每个框架内 我希望有一个独立的框架 它有自己的历史记录和后堆栈 只能通过枢轴在框架之间导航 我正在考虑使用
  • 我应该如何继承IDisposable?

    为了保护无辜者 班级名称已更改 如果我有一个名为 ISomeInterface 的接口 我还有继承该接口的类 FirstClass 和 SecondClass FirstClass 使用必须处置的资源 二等舱没有 那么问题来了 我应该从哪里
  • Json.Net 反序列化 JSON 对象,索引为名称 [重复]

    这个问题在这里已经有答案了 我尝试使用 Json NET 从 Web 服务解析 JSON 该 Web 服务返回以下格式的数据 0 ID 193 Title Title 193 Description Description 193 Orde
  • 在哪里可以查看 LINQ 源代码?

    我需要编写自己版本的 except 方法 或者至少以某种方式修改 LINQ 方法的工作方式 我正在与大型自定义对象列表进行比较 并且需要将匹配项从列表 A 连接到列表 B 我认为除外哈希表构建是进行比较的最快方法 但该方法只会返回非匹配项
  • 尝试写入事件日志时出错 - 无法打开源“SourceName”的日志。您可能没有写入权限

    目前 我们正在尝试将现有的经典 ASP 页面集成到记录事件日志的新方法中 我们通过调用公开为 COM 对象的 NET 程序集来实现此目的 该程序集实际记录到事件日志中 这一切都正常工作 但是当我们尝试写入事件日志时 我们收到错误 无法打开源
  • 在 C++ 中调用函数有多少开销?

    许多文献都谈到使用内联函数来 避免函数调用的开销 但我还没有看到可量化的数据 函数调用的实际开销是多少 即通过内联函数我们可以实现什么样的性能提升 在大多数架构上 成本包括将所有 或部分 或没有 寄存器保存到堆栈 将函数参数推送到堆栈 或将
  • Dapper 中的自定义映射

    我正在尝试使用带有 Dapper 和多重映射的 CTE 来获取分页结果 我遇到了重复列的不便 例如 CTE 阻止我命名列 我想将以下查询映射到以下对象 而不是列名和属性之间的不匹配 Query WITH TempSites AS SELEC
  • 反序列化 jQuery 序列化表单

    我正在尝试将表单输入传递到 WebMethod 中并执行某些操作 我用了jQuery 序列化 http api jquery com serialize
  • Sharepoint 客户端 GetFolderByServerRelativeUrl 文件夹修改日期

    我试图在使用 GetFolderByServerRelativeUrl 函数时检索文件夹的 修改日期 和 创建日期 我该怎么做 我只能从中获取relativeUrl 和文件夹名称 下面是我为检索文件夹所做的操作 请帮忙 FolderColl
  • 将 byte[] 作为文件打开,而不先将其实际保存为文件

    打开以 byte 形式存储在数据库中的 Word 文件的最佳方法是什么 我必须将一些文档存储在 Access 数据库中 Word 文件 2003 及更高版本 并存储在严格通过 CD 运行的应用程序上 不幸的是 它们必须位于数据库中 并且不能
  • “auto_ptr”和 STL 容器:编写错误用法的示例

    读完本教程后提出这个问题 http www cprogramming com tutorial auto ptr html http www cprogramming com tutorial auto ptr html 在那里你可以找到以
  • 通过构建服务器进行 Nuget 恢复“无法找到版本”

    我有一个 VS 解决方案 作为 TeamCity Build 的一部分 我们从私有 NuGet feed myget 和公共 feed nuget org 恢复包 大多数软件包都可以正常恢复 但它会挂在下面的 WebApi 和 Mono S
  • 在heroku上运行c++程序

    我正在尝试在 Heroku 上运行 C 程序 我读过这篇文章 但是我没能成功 因为服务器上没有 g 或 gcc 我尝试像这样将 g 下载到服务器上sudo apt get install g 但是我没有root权限 我还尝试将 g 副本复制
  • 如何为 Office AddIn 创建静默安装程序

    我在为使用 C 中的 VSTO 开发的 Outlook 加载项创建静默安装程序时遇到问题 安装程序是由 clickOnce 生成的 Outlookaddin vsto 此加载项将由 SCCM 在多台计算机上发布 我需要静默安装 但当软件包到

随机推荐

  • 使用具有阿拉伯字符的 json.dumps 将字典转换为 json [重复]

    这个问题在这里已经有答案了 我有一本包含阿拉伯语单词的字典 例如 data name name print json dumps data file open data json a encoding utf 8 Output name u
  • 在Python中使用argparse解析整个JSON

    我正在尝试使用 ARGPARSE 库在一个简单的参数中解析整个 Json 问题是当它遇到儿子内部的不同元素 例如 和 时 它会突然停止 这是测试代码 parse py import argparse parser argparse Argu
  • 从 Google 地图中的纬度、经度搜索生成英国邮政编码

    我正在尝试通过 Google 地图中的纬度和经度搜索生成英国邮政编码 例如 在 Google 地图中搜索 57 350237 1 977539 将返回以下内容 https i stack imgur com mSULM png https
  • UIProgressView 没有更新?

    我已经开始在 iOS5 中使用 UIProgressView 但还没有真正使用它 我在更新视图时遇到问题 每次更新进度后 我都有一组连续的操作 问题是 进度视图不是一点一点更新的 而是在全部完成之后才更新 事情是这样的 float cnt
  • 如何使用元类中的方法更改 groovy 中方法的行为

    我想通过以下方式 破坏 Groovy 中的 plus 方法 Integer metaClass plus Integer n gt delegate n 1 assert 2 2 5 我收到 StackOverflowException 这
  • HTTPS文件下载C#

    我需要下载隐藏在 HTTPS 连接后面的文件 我对下载安全网站后面的文件不熟悉 我尝试使用凭据来解决此问题 但无济于事 据我所知 您需要创建并使用证书来完成此操作 但我没有找到任何示例 任何帮助表示赞赏 这就是我现在所拥有的 WebClie
  • FullCalendar 日期之间的分割线

    我正在使用 jquery fullcalendar 它工作得很好 但是在议程周视图中 日期之间没有分界线 我查看了 fullcalendar 网站 甚至试图找到 css 处理显示分界线的方式 但没有成功 如何显示日期分割线 Thanks 我
  • Oracle 难以管理简单任务的说法正确吗?没有优质的管理应用程序吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我在这里看到这个说法是在咆哮中提出的http discuss joelonsoftware com default asp joel 3 456
  • 有人可以推荐 java 8 模式来替换 switch 语句吗?

    我有以下代码 public class A private String type String getType return type 现在在许多代码位置我都有这样的代码 switch a geType case A return new
  • 将静态站点生成器与 php 集成

    我目前正在使用 php 构建一个不需要定期更新的网站 并且我考虑使用静态站点生成器 因为它将具有类似博客的功能 然而 我的网站包含一个将与数据库链接的表单 我遇到的问题是静态站点生成器无法识别和解析 php 我目前正在考虑使用三个静态站点生
  • 带骨干的递归函数jquery

    我在主干中有一个应用程序 我想在 Json 中找到一些记录并打印出来 我的 JSON 是这样的 id r1 hotel id 1 name Single level 1 id r1 1 hotel id 1 name Double leve
  • 无法将 Angular 更新到版本 6

    我正在尝试将角度更新到最新版本 我已经更新了全局 angular cli npm install g angular cli 然后当我尝试使用更新本地 angular cli 时ng update angular cli我收到此错误 Err
  • 使用psql以SSL方式连接PostgreSQL

    我正在尝试为 PostgreSQL 服务器配置 ssl 证书 我在数据目录中创建了一个证书文件 server crt 和密钥 server key 并将参数SSL更新为 on 以启用安全连接 我只希望服务器在客户端使用服务器证书进行身份验证
  • 使用协处理器HBase创建二级索引

    我一直在尝试编写自己的协处理器 使用 prePut 挂钩创建二级索引 首先 我只是尝试让 prePut 协处理器工作 到目前为止 我可以将协处理器添加到传递给它的 put 对象中 我发现我无法让协处理器写入与传入的 put 对象正在写入的行
  • 可以使用 libSegFault.so 获取 SIGABRT 的回溯吗?

    神奇的咒语 LD PRELOAD lib libSegFault so someapp runs someapplibSegFault so 提供有关 SIGSEGV 的回溯信息 如中所述many http blogs fau de wit
  • 快速判断文件是否为有效视频

    确定文件是否是可播放视频的最快方法是什么 我不关心它是否腐败 只关心它是否是哑剧类型should可以在 iPad 上播放 我玩过将文件推送到NSURL正如另一个问题所建议的 但每个文件可能需要 gt 1 秒 这太慢了 我目前正在查看文件扩展
  • 正确使用 GuzzleHttp/Psr7/Response

    不确定在 php 页面中显示 Psr7 Guzzle Response 的正确方法是什么 现在 我正在做 use GuzzleHttp Psr7 BufferStream use GuzzleHttp Psr7 Response class
  • 使用数据绑定后查看边距不起作用

    下面是gridview的item布局的代码 在此 layout margin 位于设计面板中 但当我运行时没有边距 我尝试检查其他标签 例如背景 发现它有效 类似的问题是线性布局的布局权重 它们也不起作用 这些在没有数据绑定的情况下工作得很
  • WKScriptMessageHandler 不会侦听网页上按钮元素上的“onclick”或“click”事件。网页是使用Reactjs开发的

    我正在使用一个WKWebView在 UIViewController 的视图中使用 url 端点显示托管在服务器上的网页 该网页使用Reactjs 这就是我所掌握的有关该网页的所有信息 该代码创建一个 Web 视图并将该 Web 视图作为控
  • 为什么对于某些数组 A,sizeof(A) 在函数内不起作用? [复制]

    这个问题在这里已经有答案了 下列 include