首页 > 解决方案 > 我想知道这个程序中数组的长度是如何计算的?

问题描述

为什么使用 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;  
}

标签: carrays

解决方案


sizeof(arr)为您提供所有数组的字节大小。 sizeof(arr[0])为您提供数组中一个元素的字节大小(这是第一个元素,并且所有元素都具有相同的大小)。

所以sizeof(arr1)/sizeof(arr1[0])给你数组中有多少元素


推荐阅读