为什么 sizeof 在 C++ 中给出不正确的字节数?
Why is sizeof giving incorrect number of bytes in C++?
我正在尝试获取C++数组的大小,以便以后用于以后的东西。为什么这会产生 16?
#include <iostream>
using namespace std;
int main()
{
int a[4];
cout << sizeof(a) << endl;
return 0;
}
不应该给20吗?因为这个数组中基本上有 20 个字节从 a[0] 到 a[4]?元素的大小可以通过获取来验证 -
sizeof(a[0])
现在这是 4. 16/4 = 4,这意味着有 4 个 4 字节的块,而实际上应该有 5。为什么?
附言我的主要困惑源于获得 sizeof(a[4]( - 即 4。由于它给出了输出 4 - 我认为它是数组的一部分。
如果你声明数组a[4]
,这意味着它有4个元素。
唯一有效的指示是a[0]
、a[1]
、a[2]
和a[3]
。
访问a[4]
无效。
我不知道你为什么认为a[4
]会有 5 个元素。
这个数组有 4 个元素,它的大小是:
4-elements * 4-bytes = 16 bytes.
输出没有错。当你声明一个数组int a[4]
时,它有4个数据块a[0]
、a[1]
、a[2]
和a[3]
。
执行int a[4];
时,您声明的是一个4
整数数组。因此,整个向量的大小是一个int
大小的 4 倍(如果int
恰好是 4 个字节,则乘积为 16 个字节(。
C/C++(和许多其他语言(使用从零开始的索引。这意味着上面定义的数组元素从0
到3
编号。
int a[4];
有四个元素:a[0]
、a[1]
、a[2]
和a[3]
。
相关文章:
- 数组填充了不正确的值
- 我是否不正确地集中了这些字符数组?
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- CMake 设置使用不正确的参数数调用的目标属性
- 使用动态分配的数组进行矩阵乘法;结果不正确
- 递归数独求解器 不正确的解决方案 (C++)
- 字符串数组C++中的字符识别不正确
- 为什么当我使用双精度时,Qt<->Matlab 正确写入和读取我的字节,但存储 uint32 的字节不正确?
- 如何将一个字节数组正确地恢复为C 中的对象
- 合并两个数组后数组大小不正确
- 当行数和列不匹配时,输出不正确
- 将字节数组从c 不受管理的dll传递到c#unity
- C++数组排序 - 将"bbba"和"0001"视为不正确排序的问题
- 查找数组中所有正确和不正确的字符
- WriteFileEx完成例程成功,但传输的字节不正确
- 数组中的最后一个变量不正确
- 增强ASIO TCP套接字可用报告不正确的字节数
- 数组的第一个字符填充了不正确的数据C++
- 为什么我收不到字节数组中的数据?