sizeof 运算符的问题

2024-04-02

由于我想在函数中动态查找数组大小,因此我使用了 sizeof 运算符。但我得到了一些意想不到的结果。 这是一个演示程序,向您展示我想要做什么。

//------------------------------------------------------------------------------------------
#include <iostream>

void getSize(int *S1){

    int S_size = sizeof S1/sizeof(int);
    std::cout<<"array size(in function):"<<S_size<<std::endl;
}

int main(){

    int S[]={1,2,3,2,5,6,25,1,6,21,121,36,1,31,1,31,1,661,6};
    getSize(S);
    std::cout<<"array size:"<<sizeof S/sizeof(int)<<std::endl;
    return 0;
}
//------------------------------------------------------------------------------------------

编译命令:g++ demo1.cc -o demo1 {fedora 12}

output:

array size(in function):2
array size:19

请解释一下,为什么会发生这种情况。 可以采取什么措施来解决这个问题。


void getSize(int *S1)

当您将数组传递给此函数时,它会衰减为pointer类型,所以sizeof运算符将返回指针的大小。

但是,您将函数定义为,

template<int N>
void getSize(int (&S1)[N])
{
   //N is the size of array
   int S_size1 = N;
   int S_size2 = sizeof(S1)/sizeof(int); //would be equal to N!!
   std::cout<<"array size(in function):"<<S_size1<<std::endl;
   std::cout<<"array size(in function):"<<S_size2<<std::endl;
}

int S[]={1,2,3,2,5,6,25,1,6,21,121,36,1,31,1,31,1,661,6};
getSize(S); //same as before

那么你可以在函数中获得数组的大小!

在这里亲自观看演示:http://www.ideone.com/iGXNU http://www.ideone.com/iGXNU

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

sizeof 运算符的问题 的相关文章

随机推荐

  • 如何访问yaml文件中另一个变量中的变量?

    我有一个 Variables yaml 文件 如下所示 userId 12 URL xyz com user userId 上面的问题是 变量没有被替换 在运行时我的 URL 如下所示 xyz com user userId 在 YAML
  • 如何在sqlite中使用外键?

    我在 sqlite 中有两个表 它们通过 id 连接 使用此表的应用程序在 Android 操作系统上运行 表格1 id entry 1 entry2 1 aaaaaa aaaaa 2 bbbbbb bbbbb Table 2 id ent
  • Azure AD(工作)帐户可以与 Azure B2C 一起使用吗?这是一个坏主意吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要使用 Azure AD B2C 支持工作帐户 或学校帐户 我已经拥有 Facebook 和 Google 的现有客户群 但是 当
  • 在Python中结合reduce和map的最简洁的方法

    我正在做一些深度学习 我想获取所有隐藏层的值 所以我最终编写了这样的函数 def forward pass x ws bs activations u x for w b in zip ws bs u np maximum 0 u dot
  • 无法在 VS Code 中更改 Jupyter 内核

    I want to work on my Jupyter Notebook side the VS Code for the first time When I load the file and run the first cell I
  • 在 DirectX 中创建和使用纹理

    我正在尝试使用代码创建纹理 将其转换为着色器资源视图 然后将其应用到平面 但是我得到的只是一个黑色方块 我尝试使用 msdn 上的示例代码无济于事 还尝试使用 unsigned char 和 float float 如下所示 因为这就是我需
  • 如何压缩不同长度的列表?

    我怎么能够zip两个列表 例如 Line1 Line2 Line3 Line4 Line5 不丢弃第一个列表中的其余元素 如果可以的话 我想用空列表压缩额外的元素 zipWithPadding a gt b gt a gt b gt a b
  • 如何使窗口移动命令忽略某个窗口?

    所以我通常在 Emacs 中打开 3 个缓冲区 我正在编写的实际代码的一个缓冲区 用于所述代码的单元测试的一个缓冲区 A third buffer that displays the results of the unit test Thi
  • 是否有一种已知的用于电力塔模数管理所有情况的算法?

    我想在 PARI GP 中实施 用于计算 a 1 a 2 a n mod m 它管理所有情况 特别是 phi 链中出现高权力的情况 有谁知道这样的实现吗 这里可以使用中国余数来确保模数是素数幂 这简化了在 gcd x m 不为 1 的痛苦情
  • 仅获取子文件夹的文件夹大小,而忽略任何其他内容?

    我创建了下面的脚本 它管理和维护 RootFolder 中分配的存储 其中存储每日备份 每个备份都存储在其自己的单独文件夹中 并且如果 RootFolder 内容超过预设限制 则最旧的备份文件夹将被删除 到目前为止 一切都很好 我遇到的问题
  • React-markdown 不渲染 Markdown

    我正在使用 React markdown 来呈现输入的值 问题是归约没有得到应有的处理 例如如果我使用这个表达式 hello world 文本应该在h1中显示为文本 但它正常显示 其他表达式也无法显示被执行 setDataForm comi
  • CSS 弹出菜单

    我想在某些菜单项悬停时创建弹出菜单 我的菜单如下所示 项目1 项目2 项目3 当 item2 悬停时 我想在 item2 下方显示弹出窗口 箭头指向上方 我确信使用 javascript 可以很容易地做到这一点 尽管我还没有这样做过 但这里
  • 更改输入 onchange 的值?

    我正在尝试创建一个简单的 JavaScript 函数 当有人在一个数字中插入一个数字时input字段时 另一个字段的值应更改为该值 这是我现在所拥有的 function updateInput ish fieldname value ish
  • Amazon S3s 密钥背后的数据结构(过滤数据结构)

    我想实现一个类似于 Amazon S3 的查找功能的数据结构 就上下文而言 Amazon S3 将所有文件存储在平面命名空间中 但允许您通过文件名中的公共前缀查找文件组 从而复制目录树的功能 但又不那么复杂 问题是 查找和过滤操作都是 O
  • 如果类具有 @XmlElement 属性,则它不能具有 @XmlValue 属性

    我收到以下错误 If a class has XmlElement property it cannot have XmlValue property updated class XmlType propOrder currencyCode
  • 如何在 sqlalchemy 查询中将日期时间更改为字符串? [复制]

    这个问题在这里已经有答案了 这是我的代码 查询Notification create time result session query Notification content cls is read Notification creat
  • Freebase 上 MQL 中的多个查询

    我正在尝试从 Freebase 获取结果列表 我有一系列 MID 有人可以解释一下我如何构建查询并将其传递给 PHP 中的 API 吗 我是 MQL 新手 我什至无法让示例正常工作 simplequery array id gt topic
  • 斯威夫特:“!”的区别和 '?'迅速

    我声明如下 IBOutlet var hw label UILabel 如果我像上面那样写就可以成功运行 但是当我声明如下时 IBOutlet var hw label UILabel and hw label text Hello Wor
  • 如何使用 CSS/Javascript 防止 iOS 上 HTML 上的自动旋转图像

    我正在创建一个照片网站 我上传了一张自己的照片 但实际上方向不正确 图像逆时针旋转 90 度 我从我的 iPhone 上传了这张图片 显然 iPhone 是故意以这种方式存储的 在我的网站上 HTML 页面呈现了一个 JSON 对象 其中包
  • sizeof 运算符的问题

    由于我想在函数中动态查找数组大小 因此我使用了 sizeof 运算符 但我得到了一些意想不到的结果 这是一个演示程序 向您展示我想要做什么 include