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;
}
4 Réponses :
char arr1[] = {1, 2, 3, 4, 5};
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.
length représente un entier comme vous pouvez le voir donc il n'y a pas d'erreur
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
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]
Le calcul
sizeof (arr1) / sizeof (arr1 [0])calcule le nombre d'éléments dansarr1.