我对 sizeof() 有疑问。我知道它给出了数组中使用的字节数。我的问题是如果数组没有定义,但它声明了怎么办。
例子:
float array[3];
int p = sizeof(array);
产生的值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 中的情况有些不同(但与手头的问题无关)。
使用此代码时,您没有声明浮点数组
float array(3);
您已经简单地创建了一个名为数组的浮点变量,其值为 3。您对该变量的 sizeof 调用仅返回浮点的大小。你是否正确地声明了它
float float_array[3];
并打电话给sizeof(float_array)
你会得到你期望的价值 -3*sizeof(float)
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,至少在我的系统。当然,用于数据类型的字节数可能因系统而异。