0

我对 sizeof() 有疑问。我知道它给出了数组中使用的字节数。我的问题是如果数组没有定义,但它声明了怎么办。

例子:

float array[3];
int p = sizeof(array);
4

3 回答 3

5

产生的值sizeof仅取决于类型,而不是运行时发生的任何事情1

也就是说,尽管有这个名字,它float array(3);只是简单地定义了一个浮点数,初始值为 3,因此int p=sizeof(array);等价于int p = sizeof(float);.

编辑:(对应于编辑的问题):是的,float array[3];定义了一个3个浮点数的数组,所以int p = sizeof(array);相当于int p = 3 * sizeof(float);


1在 C++ 中。从 C99 开始,C 中的情况有些不同(但与手头的问题无关)。

于 2012-08-27T18:59:22.443 回答
1

使用此代码时,您没有声明浮点数组

 float array(3);

您已经简单地创建了一个名为数组的浮点变量,其值为 3。您对该变量的 sizeof 调用仅返回浮点的大小。你是否正确地声明了它

float float_array[3];

并打电话给sizeof(float_array)你会得到你期望的价值 -3*sizeof(float)

于 2012-08-27T19:03:21.580 回答
1

sizeof() 没有给出数组中使用的字节数,您的定义不完整且部分不正确。

http://en.cppreference.com/w/cpp/language/sizeof说:

“sizeof(type)——返回类型对象表示的字节大小”

正如其他人所指出的,float array[3] 也是声明具有 3 个元素的浮点数组的正确方法。

最后,sizeof(array) 将返回 12,而 sizeof(array) 将返回 16,如果你用 4 个元素声明它,如果你声明一个包含 5 个双精度而不是浮点数的数组,sizeof(array) 将返回 40,至少在我的系统。当然,用于数据类型的字节数可能因系统而异。

于 2012-08-27T19:09:14.977 回答