0
votes

Je veux savoir comment la longueur du tableau est-elle calculée dans ce programme?

Pourquoi est-il utilisé la division de sizeof (arr1 [0]) pour calculer la longueur du tableau? Il peut être calculé simplement sans le diviser par sizeof (arr1 [0]). Veuillez expliquer ceci si quelqu'un connaît la raison

   #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;  
}


1 commentaires

Le calcul sizeof (arr1) / sizeof (arr1 [0]) calcule le nombre d'éléments dans arr1 .


4 Réponses :


0
votes
char arr1[] = {1, 2, 3, 4, 5};

0 commentaires

0
votes

sizeof () retournera le montant en octets de l'argument que vous lui donnez. sizeof (arr1) renverra la taille en octets du tableau arr1 . Il est différent du nombre d'éléments, généralement appelé tableau longueur . Pour connaître la longueur d'un tableau, vous devez d'abord connaître la quantité d'octets de celui-ci, puis le diviser par la taille (en octets) de chaque élément (c'est-à-dire ce que votre code sizeof (arr1) / sizeof (arr1) [0]) fait).

Cela dit, votre code a une erreur dans la ligne int arr2 [length]; . La longueur des tableaux doit être évaluée à un nombre naturel constant. Comme length ne représente pas un entier constant, il ne peut pas être utilisé dans la déclaration de arr2 - il est probable que votre compilateur vous renvoie une erreur.


1 commentaires

length représente un entier comme vous pouvez le voir donc il n'y a pas d'erreur



2
votes

sizeof (arr) vous donne la taille en octets de tout le tableau. sizeof (arr [0]) vous donne la taille en octets d'un élément du tableau (qui est le premier élément, et tous les éléments ont la même taille).

Donc, sizeof (arr1) / sizeof (arr1 [0]) vous donne le nombre d'éléments qu'il y a dans le tableau


0 commentaires

1
votes

Dans le langage de programmation C, l'opérateur sizeof génère la taille d'une variable ou d'un type de données, mesurée en nombre d'octets requis pour le type.

sizeof(arr1[0])

cela signifie la taille du tableau entier arr1 en octets.

sizeof(arr1)

cela signifie la taille du premier élément en octets.

La division des deux est donc la longueur du tableau arr . [en éléments]


0 commentaires