Jul*_*ell 1 c arrays sizeof divide
我不止一次看到在数组索引 0 上使用的 sizeof 运算符在存储数组元素数量时充当分母。我的问题是为什么使用 sizeof 运算符而不是仅除以 1 或根本不除?
请参阅下面https://www.bravegnu.org/gnu-eprog/c-startup.html中的一些示例代码中的这种现象的示例。
static int arr[] = { 1, 10, 4, 5, 6, 7 };
static int sum;
static const int n = sizeof(arr) / sizeof(arr[0]); //RIGHT HERE!!!!!
int main()
{
int i;
for (i = 0; i < n; i++)
sum += arr[i];
}
Run Code Online (Sandbox Code Playgroud)
static int arr[] = { 1, 10, 4, 5, 6, 7 };
Run Code Online (Sandbox Code Playgroud)
数组arr是一堆整数,准确地说是六个。每个整数占用一定数量的字节(为了这个答案,我们假设四个字节 - 在某些系统上它可以更多或更少)。
因此,sizeof(arr)是 24 个字节,每个整数乘以 4 个字节的 6 个整数。
如果您想知道数组中有多少个元素(而不是字节),请将整个数组的大小除以单个成员的大小(以下之一):
static const int n = sizeof(arr) / sizeof(arr[0]);
static const int n = sizeof(arr) / sizeof(*arr);
// sizeof(arr) / sizeof(arr[0]) == 24 / 4 == 6 elements
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |