sizeof() 如何通过引用参数传递

2023-12-06

我将一个数组传递给函数并尝试查找该数组的长度。但结果却出乎意料。有人可以解释一下吗?

int main()
{
     int array[10]={0};
     func(array);
     return 0;
}
void func(int arr[])
{
    printf("length of an array is %d ",(sizeof(arr)/sizeof(arr[0]));
}

它给出了答案2。 当我在 main 函数中尝试相同的操作时,它工作正常(答案是 10)。 //在linux中使用gcc编译器


在我看来,结果是因为sizeof(arr) == 8(PC 上指针的大小)和sizeof(arr[0]) == 4因为它是一个整数因此8/4==2.

本声明:void func(int arr[])告诉函数期望指向 int 的指针作为论证。

我不清楚是否可以计算sizeof通过引用的数组。C接受数组引用作为参数的函数总是倾向于接收它们的长度作为参数。

与的区别main()函数是里面的main array变量的类型int[10], thus sizeof能够获取其长度(以字节为单位)。在func, arr属于类型int* so sizeof仅给出指针的长度(以字节为单位)。

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

sizeof() 如何通过引用参数传递 的相关文章

  • 当 edmx 文件位于单独的项目中时出错

    我有问题说 在配置中找不到指定的命名连接 或者不打算与EntityClient提供者 或无效 我的 edmx 文件位于单独的项目中 但该项目的连接字符串app config 什么可能导致问题 确保 app config 位于设置为启动项目的
  • 如何获取列表框中项目的索引?

    我正在将项目添加到ListBox像这样 myListBox Items addRange myObjectArray 我还想通过以下方式选择我添加的一些项目 foreach MyObject m in otherListOfMyObject
  • 用于测试 func(args) 是否格式良好且具有所需返回类型的特征

    有许多类似的问题 答案 但我无法将这些答案完全放在一起来服务于我的目的 我想要一个特质 template
  • System.Drawing.dll / NumericUpDown 的 .NET 访问冲突异常

    我遇到了一个非常愚蠢的问题 我已经尝试完全重新安装 NET 但它没有解决问题 我什至无法通过谷歌搜索找到其他有同样问题的人 就在我的计算机上 如果我将 NumericUpDown 控件添加到 NET 项目中的窗体并运行该应用程序 则在运行该
  • 将项目添加到字典中作为第一个项目c# [重复]

    这个问题在这里已经有答案了 我目前正在将项目添加到字典中 如下所示 private Dictionary
  • 剃刀 2 到剃刀 3 MVC 5

    我一直在开发 MVC 4 解决方案 并且一直在尝试将其升级到 MVC 5 我已按照概述的步骤操作here http www asp net mvc tutorials mvc 5 how to upgrade an aspnet mvc 4
  • 通过 Microsoft Graph 从 Azure AD 获取组中的用户

    我正在通过 Microsoft Graph 从 AzureAD 请求用户列表 我取回了 User 对象 但它们的 MemberOf 属性始终为 null 我认为我可以使用 Expand 来专门请求该属性 虽然它不会导致错误 但它也不会填充该
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • 如何在 Mac OS X 中获取 aio 信号处理程序的用户数据

    我尝试在 Mac OS X 下使用 aio 函数进行异步文件 IO 但在将某种形式的用户数据输入信号处理程序时遇到问题 这是设置操作的代码 class aio context public aio context int fildes bo
  • 从 Web 浏览器控件读取 Javascript 变量

    我正在尝试读取从表单上的 WebBrowser 控件加载和调用的 Javascript 变量的值 Example index html 引用名为 test js 的 javascript 在 test js 上 创建并填充了几个变量 然后i
  • 如何在 PostgreSQL 函数中声明行类型数组?

    我正在尝试创建一个 PostgreSQL 函数 在用它做更多事情之前 我将循环查询的行并将其中一些存储在数组中 如何创建行类型数组 CREATE OR REPLACE FUNCTION forExample RETURNS integer
  • 保存到会话状态的 DataTable 丢失事件处理程序

    我有一个来自强类型数据集的数据表 该数据集在 TableNewRow 事件上有一个事件处理程序 用于初始化一些日期字段 当我将此表保存到会话状态时 事件处理程序会正常触发 直到表被序列化 在后续请求中 当我从会话状态检索表时 事件处理程序不
  • 如何将值从控制器传递到asp.net中的视图?

    我正在开发一个应用程序 我需要将用户名的值从控制器传递到视图 我尝试了 ViewData 中给出的http msdn microsoft com en us library system web mvc viewdatadictionary
  • std::function 中参数的自动动态转换

    我们有多态类 A 和 B 例如 struct A virtual A struct B final public A void f std cout lt lt f lt lt std endl 我想分配一个变量std function
  • ASPNET MVC - 使用具有相同签名的新助手覆盖 Html.TextBoxFor(model.property)?

    我想用我自己的助手重写 Html TextBoxFor 该助手具有完全相同的签名 当然 但名称空间不同 这是否可能 如果可以 如何实现 原因是我在现有的应用程序中有 100 多个视图 并且我想更改 TextBoxFor 的行为 以便在属性具
  • JsonSerializer.Deserialize 失败

    考虑代码 using System using System Text Json public class Program public static void Main int id 9 string str id id var u Js
  • C++ boost asio超时用于阻止连接

    我有一个 C boost 客户端 它执行阻塞连接并在收到响应后处理消息 我面临一个奇怪的问题 tcp resolver query query tcp v6 this gt host port tcp resolver query v4 m
  • 为什么%c前面需要加空格? [复制]

    这个问题在这里已经有答案了 下面的代码一编译就给出了奇怪的o p main char name 3 float price 3 int pages 3 i printf nEnter names prices and no of pages
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • ASP.NET:通过命名空间一次注册多个控件?

    是否可以在 aspx 文件中注册用户控件的完整命名空间 而不是单独注册每个控件 我创建了一堆用户控件并将它们收集到自己的命名空间 MyWebControls 中 如下所示 隐藏代码 namespace MyWebControls publi

随机推荐

  • java字符串文字可以被垃圾收集吗?如果是,如何证明?

    可以java吗字符串文字 like abc 被垃圾收集 如果是 我们怎样才能以编程方式证明他们是GCed 是的 在 Java7 之后 如果加载字符串文字的类加载器被垃圾收集 并且没有对字符串文字的引用 则字符串文字可以被垃圾收集 注意 在
  • 对于不应该提交的已更改文件,是否有正确的 git 程序?

    我刚刚继承了一个现有的代码库 其中包含多个配置文件 这些配置文件都是通用的 需要针对下载到的每台计算机进行编辑和自定义 Git 显然 告诉我它们已被编辑 并且每次我执行操作时总是将它们显示在 未暂存提交的更改 下git status git
  • ADL 何时应用?

    有3个例子 I typedef int foo namespace B struct S operator int return 24 int foo B S s return 0 int main int t foo B S 24 ADL
  • ZF2 apigility - 我们如何验证 json 数据中的集合

    如何使用 Apigility 获取经过验证的 json 值 例如 我需要验证user id under users集合在以下json数据中 log type split food meal type Break Fast meal date
  • 我可以在oracle中从月到日更改范围间隔分区吗

    我有一个表 其分区如下并具有数百万行数据 表大小为 120 GB PARTITION BY RANGE Read time INTERVAL NUMTOYMINTERVAL 1 MONTH 现在我想用现有数据和未来数据更改为这种分区策略 表
  • 使用 JMS 发送消息在退出时挂起

    我正在尝试创建一个 Java 应用程序客户端项目 该项目将 JMS 消息发送到 Glassfish 服务器上的队列 问题是应用程序发送消息后 它在应该退出时挂起 消息传输成功 但由于某种原因应用程序没有退出 我尝试过调试该应用程序 并且可以
  • 当使用 get-content 回显到屏幕时,如何使 powershell 能够解释 ansi 颜色代码?

    我有一个日志文件 其中包含各种文本周围的 ansi 颜色代码 我使用 powershell 语言命令将其回显到控制台 get content logfile log wait 这样我就可以看到最新的日志更改 但是 所有 ansi 颜色代码都
  • 从 WooCommerce 中的所有优惠券中排除产品

    我在互联网上进行了搜索 但尽管有无数人问这个问题 但似乎没有任何答案 有什么办法可以从所有优惠券中排除特定产品吗 我知道你可以在优惠券级别上做到这一点 但这相当混乱 特别是因为很多人都有自动优惠券 几个人创建优惠券等 TLDR 任何使产品排
  • 制作一个位于内容区域之外的 div,但在浏览器窗口缩小时不会导致水平滚动条出现

    假设您有一个网站 其正文背景颜色为红色 内容区域为白色背景 宽度为 1 000 像素 现在 假设您希望内容区域上有一个投影 该投影在内容区域和红色背景的交界处最暗 并且当它从左侧离开左侧和从右侧离开右侧时变得不那么不透明 它基本上看起来像这
  • 未捕获的异常“Swift_TransportException”,消息为“无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]”

    我已经在谷歌中搜索过它并尝试了这里的所有建议堆栈溢出但我仍然得到致命错误 我在用SwiftMailer用于发送和email to GMAIL 它在我的本地主机上完美运行 但是当我上传它并尝试时它给了我一个致命错误 这是我的代码的一部分 re
  • 如何给请求设置Tag并从Response Volley异步请求中获取?

    我有一个带有多个 REST Api 的 Android 应用程序 API 使用 Volley 库进行管理 响应正在得到 并且运行良好 但是当我发出异步请求时 我无法识别每个请求的响应 我的请求方法是这样的 private void http
  • 调整输入文本区域的大小

    我想创建一个自动增长的文本区域 所以我使用this指导 它运行良好 但有一个小问题 当您插入大文本并删除它们时 文本区域的大小超出了应有的大小 每插入一个字符 大小就会减少 1 2 像素 因此插入几个字符后 高度就会再次恢复正常 要重新创建
  • 什么是连续内存块?

    就像标题一样 什么是连续内存块 这是一个由 5 个字节组成的连续内存块 从位置 1 到位置 5 它表示内存中在一起的字节 浅蓝色 它们之间没有间隙字节 白色 这是一组不连续的感兴趣的五个字节 它被分成三组字节 黄色 在位置 4 和 6 处有
  • 回发后下拉不保留所选值

    我正在使用经典的 asp 我有一个下拉列表 用户可以选择然后按提交 他们按下提交后 下拉列表将返回默认值 而不是他们选择的值 无论如何 是否可以在回发之间保持下拉状态 而不是返回默认状态 如果需要可以发布代码示例 谢谢 您必须根据用户发布的
  • 重定向在 unix 内部是如何工作的

    让我们举个例子 我有一个名为 a out 的可执行文件 它包含将一些文本打印到 printf 的 STDOUT cos 的二进制信息 所以当我给出 a out 时 我在控制台 STDOUT 上看到 printf 的输出 假设我在控制台中执行
  • KeyguardManager FLAG_DISMISS_KEYGUARD 服务

    当屏幕打开时 我想检查电源按钮是否激活了它 如果是 它将自动关闭键盘保护并运行吐司 当屏幕关闭时 键盘保护将重新启用 代码到这里为止都有效 但是 当屏幕关闭时 我按下 音量调高 按钮 屏幕就会打开 但它进入检测到 电源 按钮被按下的循环 这
  • ORA-00911: 无效字符 Toad

    我用的是蟾蜍11 5 当我运行多个 truncate 语句时 它给出一个错误ORA 00911 无效字符 truncate table employees truncate table employees edit history trun
  • 如何在 IIS7 中设置应用程序的默认页面?

    我将 Web 应用程序部署到 IIS7 一切正常 但是 我希望它自动转到 www xxxxxx com views root default aspx 而不是输入真正的起始页的 url 我该怎么做呢 只需转到 web config 文件并添
  • 允许 python 子进程的多个输入

    我有一个与几年前提出的问题几乎相同的问题 有两个输入的 Python 子进程收到了一个答案但没有实施 我希望这份报告可以帮助我和其他人澄清问题 如上所述 我想使用 subprocess 来包装一个需要多个输入的命令行工具 特别是 我想避免将
  • sizeof() 如何通过引用参数传递

    我将一个数组传递给函数并尝试查找该数组的长度 但结果却出乎意料 有人可以解释一下吗 int main int array 10 0 func array return 0 void func int arr printf length of