为什么 sizeof(array) 相乘?
Why sizeof(array) is multiplied?
这对我来说毫无意义:
int start_tab[2];
printf("size of an array: %d\n", sizeof(start_tab));
8
为什么是 8 个?
如何使其大小为 2?
你需要像这样除以类型的大小
sizeof(start_tab) / sizeof(int)
sizeof
以字节为单位给出大小,因为每个 int
是 4
字节那么其中两个显然是八个,所以你可以除以一个 [=12] 的大小=] 并获取您要查找的值。
因为 int 是 4
字节...所以乘以 2
得到 8
所以如果你想要元素大小除以 sizeof(int)
.
您必须执行 sizeof(start_tab)/sizeof(start_tab[0])
才能获得数组中的元素数
请注意,sizeof
是运算符,不是函数。 sizeof
returns 提供的数据类型的大小。
Why 8?
start_tab
类型为 int [2]
、returns 2 * sizeof (int)
# 或 8
.
How make it to be size of 2?
如果想得到数组中元素的个个,只需将总大小除以单个元素的大小即可,如
sizeof(start_tab) / sizeof(start_tab[0])
# 在您的平台中,sizeof(int)
== 4.
因为 int
在您的平台上是 32 位,即 4
字节。您有 2
int
s 乘以 32 位等于 64 位,即 8
字节。 sizeof
将 return 数据类型的大小(以字节为单位)。
来自 C 标准(6.5.3.4 sizeof 和 alignof 运算符)
2 The sizeof operator yields the size (in bytes) of its operand,
which may be an expression or the parenthesized name of a type.
数组
int start_tab[2];
占用2 * sizeof( int )
字节,因为它有两个元素,每个元素的类型都是int
。所以如果 sizeof( int )
等于 4
那么数组占用 8
bytes.
所以你有一个公式
sizeof( start_tab ) = 2 * sizeof( int )
或者在一般情况下,如果一个数组有 N 个类型为 T 的元素,例如
T array[N];
然后
sizeof( array ) = N * sizeof( T )
或者因为数组的每个元素都具有类型 T 包括数组的第一个元素那么你也可以写
sizeof( array ) = N * sizeof( array[0] )
使用这个公式你可以计算 N 就像
N = sizeof( array ) / sizeof( array[0] )
或
N = sizeof( array ) / sizeof( *array )
因为 *array
生成数组的第一个元素。
这对我来说毫无意义:
int start_tab[2];
printf("size of an array: %d\n", sizeof(start_tab));
8
为什么是 8 个? 如何使其大小为 2?
你需要像这样除以类型的大小
sizeof(start_tab) / sizeof(int)
sizeof
以字节为单位给出大小,因为每个 int
是 4
字节那么其中两个显然是八个,所以你可以除以一个 [=12] 的大小=] 并获取您要查找的值。
因为 int 是 4
字节...所以乘以 2
得到 8
所以如果你想要元素大小除以 sizeof(int)
.
您必须执行 sizeof(start_tab)/sizeof(start_tab[0])
才能获得数组中的元素数
请注意,sizeof
是运算符,不是函数。 sizeof
returns 提供的数据类型的大小。
Why 8?
start_tab
类型为 int [2]
、returns 2 * sizeof (int)
# 或 8
.
How make it to be size of 2?
如果想得到数组中元素的个个,只需将总大小除以单个元素的大小即可,如
sizeof(start_tab) / sizeof(start_tab[0])
# 在您的平台中,sizeof(int)
== 4.
因为 int
在您的平台上是 32 位,即 4
字节。您有 2
int
s 乘以 32 位等于 64 位,即 8
字节。 sizeof
将 return 数据类型的大小(以字节为单位)。
来自 C 标准(6.5.3.4 sizeof 和 alignof 运算符)
2 The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type.
数组
int start_tab[2];
占用2 * sizeof( int )
字节,因为它有两个元素,每个元素的类型都是int
。所以如果 sizeof( int )
等于 4
那么数组占用 8
bytes.
所以你有一个公式
sizeof( start_tab ) = 2 * sizeof( int )
或者在一般情况下,如果一个数组有 N 个类型为 T 的元素,例如
T array[N];
然后
sizeof( array ) = N * sizeof( T )
或者因为数组的每个元素都具有类型 T 包括数组的第一个元素那么你也可以写
sizeof( array ) = N * sizeof( array[0] )
使用这个公式你可以计算 N 就像
N = sizeof( array ) / sizeof( array[0] )
或
N = sizeof( array ) / sizeof( *array )
因为 *array
生成数组的第一个元素。