import std.stdio;
void main() {
int[] a = [1,2,3,4,5,6,7,8,9,10];
write(a.sizeof);
}
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,静态数组的sizeof等于8字节.我使用x86 Windows 8,因此指针等于4个字节.为什么我得到8字节大小的数组?
因为int[]
是动态数组,而不是指针.D中的数组不是指针.它们本质上是什么
struct(T)
{
T* ptr;
size_t length;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果你想要底层指针,你需要使用数组的ptr
成员,尽管通常只有在与C/C++代码交互时才需要(因为C/C++ 中的动态数组只是指针).但是,该length
成员一直被使用,并且有助于使D中的数组比C/C++中的数组更强大和令人愉快.如果您想了解D中有关数组的更多信息,那么您应该阅读本文.它会详细介绍它们,我认为这对所有D程序员来说都是必读的.
无论如何,什么sizeof
是给你的大小ptr
和length
在一起,这将是8
在32位系统和16
64位系统.