gpt4 book ai didi

c++ - 64 位与 32 位环境中 C++ 数组的大小

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:12 24 4
gpt4 key购买 nike

假设我有一个定义如下的类

class foo
{
char [10] bar;
}

假设没有填充/打包,与 32 位环境相比,在 64 位环境中此类的大小有何不同。

我相信类的 64 位版本的长度会多 4 个字节,因为:

  1. 该类必须包含一个 char* 以指向数组 bar 的开头
  2. char* 在 64 位环境中是 8 个字节,而在 32 位环境中是 4 个字节

我说的对吗?

谢谢!

关于数组实际如何工作的进一步问题如果你声明数组时没有存储指针,你怎么能从数组名中获取地址并执行 bar[0]、bar[1] 等操作?

最佳答案

不,你不是。 char [] bar; 甚至无法编译,char bar[10]; 是正确的语法,不,没有存储指针,sizeof(char) 总是1 和 sizeof bar 将为 10,无论架构如何。

现在回答您的附加问题:您必须了解左值和右值以及左值到右值转换的概念。通常左值到右值的转换“什么都不做”。一个异常(exception)是 T 数组的左值到右值转换是转换为指向 T 的指针,该指针指向数组的第一个元素。

另外,一个函数声明接受一个 T 数组的值等同于一个函数声明接受一个指向 T 的指针。

关于c++ - 64 位与 32 位环境中 C++ 数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3917944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com