bim*_*mbi -6 c++ memory arrays pointers
我正在尝试获取 C++ 中数组的大小,以便稍后用于处理。为什么这会产生 16?
#include <iostream>
using namespace std;
int main()
{
int a[4];
cout << sizeof(a) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不应该给20吗?因为这个数组从 a[0] 到 a[4] 基本上有 20 个字节?可以通过以下方式验证元素的大小 -
sizeof(a[0])
Run Code Online (Sandbox Code Playgroud)
现在这是 4。16/4 = 4,这意味着有 4 个 4 字节的块,而实际上应该是 5。为什么会这样?
PS 我的主要困惑源于获取 sizeof(a[4]) - 它是 4。因为它给出了输出 4 - 我认为它是数组的一部分。
abe*_*nky 13
如果声明 array a[4],则意味着它有4 个元素。
唯一有效索引是a[0],a[1],a[2],和a[3]。
访问a[4]无效。
我不知道你为什么认为a[4] 会有 5 个元素。
该数组有 4 个元素,其大小为:
4-elements * 4-bytes = 16 bytes.
Run Code Online (Sandbox Code Playgroud)