Ottieni la dimensione di un array in C
-
Operatore
sizeof()
per determinare la dimensione di un array in C - Ottieni la lunghezza dell’array in C
Questo tutorial introduce come determinare la lunghezza di un array in C. L’operatore sizeof()
viene utilizzato per ottenere la dimensione / lunghezza di un array.
Operatore sizeof()
per determinare la dimensione di un array in C
L’operatore sizeof()
è un operatore unario in fase di compilazione. Viene utilizzato per calcolare la dimensione del suo operando. Restituisce la dimensione di una variabile. L’operatore sizeof()
fornisce la dimensione nell’unità di byte.
L’operatore sizeof()
è usato per qualsiasi tipo di dati come primitive come int
, float
, char
e anche tipi di dati non primitivi come array
, struct
. Restituisce la memoria allocata a quel tipo di dati.
L’output può essere diverso su macchine diverse come un sistema a 32 bit può mostrare output diversi e un sistema a 64 bit può mostrare diversi degli stessi tipi di dati.
Sintassi di sizeof()
:
sizeof(operand)
- L ‘
operando
è un tipo di dati o qualsiasi operando.
Operatore sizeof()
per tipi di dati primitivi in C
Questo programma utilizza un int
, float
come tipo di dati primitivo.
#include <stdio.h>
int main(void) {
printf("Size of char data type: %u\n", sizeof(char));
printf("Size of int data type: %u\n", sizeof(int));
printf("Size of float data type: %u\n", sizeof(float));
printf("Size of double data type: %u\n", sizeof(double));
return 0;
}
Produzione:
Size of char data type: 1
Size of int data type: 4
Size of float data type: 4
Size of double data type: 8
Ottieni la lunghezza dell’array in C
Se dividiamo la dimensione totale dell’array per la dimensione dell’elemento dell’array, otteniamo il numero di elementi dell’array. Il programma è il seguente:
#include <stdio.h>
int main(void) {
int number[16];
size_t n = sizeof(number) / sizeof(number[0]);
printf("Total elements the array can hold is: %d\n", n);
return 0;
}
Produzione:
Total elements the array can hold is: 16
Quando un array viene passato come parametro alla funzione, viene considerato come un puntatore. L’operatore sizeof()
restituisce la dimensione del puntatore invece della dimensione dell’array. Quindi all’interno delle funzioni, questo metodo non funzionerà. Invece, passa un parametro aggiuntivo size_t size
per indicare il numero di elementi nell’array.
#include <stdio.h>
#include <stdlib.h>
void printSizeOfIntArray(int intArray[]);
void printLengthIntArray(int intArray[]);
int main(int argc, char* argv[]) {
int integerArray[] = {0, 1, 2, 3, 4, 5, 6};
printf("sizeof of the array is: %d\n", (int)sizeof(integerArray));
printSizeOfIntArray(integerArray);
printf("Length of the array is: %d\n",
(int)(sizeof(integerArray) / sizeof(integerArray[0])));
printLengthIntArray(integerArray);
}
void printSizeOfIntArray(int intArray[]) {
printf("sizeof of the parameter is: %d\n", (int)sizeof(intArray));
}
void printLengthIntArray(int intArray[]) {
printf("Length of the parameter is: %d\n",
(int)(sizeof(intArray) / sizeof(intArray[0])));
}
Uscita (in un sistema operativo Linux a 64 bit):
sizeof of the array is : 28 sizeof of the parameter is : 8 Length of the array
is : 7 Length of the parameter is : 2
Uscita (in un sistema operativo Windows a 32 bit):
sizeof of the array is : 28 sizeof of the parameter is : 4 Length of the array
is : 7 Length of the parameter is : 1