Owe*_*wen 4 c++ struct sizeof data-structures
我有一个结构:
struct KeyPair
{
int nNum;
string str;
};
Run Code Online (Sandbox Code Playgroud)
假设我初始化我的结构:
KeyPair keys[] = {{0, "tester"},
{2, "yadah"},
{0, "tester"}
};
Run Code Online (Sandbox Code Playgroud)
我将创建具有不同大小的结构的几个实例.因此,为了能够在循环中使用它并读取它的内容,我必须获得结构中的元素数量.如何获取结构中的元素数量?在这个例子中,我应该得到3,因为我初始化了3对.
如果您正在尝试计算keys阵列的元素数量,您可以这样做sizeof(keys)/sizeof(keys[0]).
关键是结果sizeof(keys)是内存中键数组的大小(以字节为单位).除非元素长度为1个字节,否则这与数组的元素数不同.要获得所需的元素数,需要将字节数除以元素类型sizeof(keys[0])的大小,这将返回数据类型的大小key[0].
这里的重要区别是要理解sizeof()与数组和数据类型的行为不同.您可以将两者结合起来以实现您的需求.
http://en.wikipedia.org/wiki/Sizeof#Using_sizeof_with_arrays