c - 我想知道这个程序中数组的长度是如何计算的?
问题描述
为什么使用 sizeof(arr1[0]) 的除法来计算数组的长度?它可以简单地计算而不用 sizeof(arr1[0])。如果有人知道原因,请解释一下
#include <stdio.h>
int main()
{
//Initialize array
int arr1[] = {1, 2, 3, 4, 5};
//Calculate length of array arr1
int length = sizeof(arr1)/sizeof(arr1[0]);
//Create another array arr2 with the size of arr1.
int arr2[length];
//Copying all elements of one array into another
for (int i = 0; i < length; i++) {
arr2[i] = arr1[i];
}
//Displaying elements of array arr1
printf("Elements of original array: \n");
for (int i = 0; i < length; i++) {
printf("%d ", arr1[i]);
}
printf("\n");
//Displaying elements of array arr2
printf("Elements of new array: \n");
for (int i = 0; i < length; i++) {
printf("%d ", arr2[i]);
}
return 0;
}
解决方案
sizeof(arr)
为您提供所有数组的字节大小。
sizeof(arr[0])
为您提供数组中一个元素的字节大小(这是第一个元素,并且所有元素都具有相同的大小)。
所以sizeof(arr1)/sizeof(arr1[0])
给你数组中有多少元素
推荐阅读
- r - 使用修改后的列名绘制图形的 R 函数
- node.js - 关于 Web 应用程序的安全性,我应该注意什么?
- asp.net - Visual Studio 2019 中多个帐户的 DefaultAzureCredential 异常
- php - 使用 PHP / AJAX 中的 mysql 数据库中的数据填充 Bootstrap Accordion
- mongodb - 尝试将 mongodb 与我的应用程序连接时出现错误
- r - 在 R 中对高于和低于特定阈值的值进行分组
- javascript - React-Router 不会将我从组件重定向
- android - 如何确保我不会继续向我的房间数据库输入数据
- javascript - MERN stack err.kind 表达式:从哪里来?
- sql - 自己获取名字和姓氏