logo

Longitud de la matriu en C

La longitud d'una matriu en C fa referència al nombre d'elements de la matriu. S'ha d'especificar en el moment de la declaració. També es coneix com la mida d'una matriu que s'utilitza per determinar la memòria necessària per emmagatzemar tots els seus elements. En el llenguatge de programació C, no tenim cap funció predefinida per trobar la longitud de la matriu, però podem determinar-la manualment mitjançant diferents mètodes esmentats a continuació:

    Ús de l'operador sizeof() Ús d'aritmètica de punters Ús de bucle

1. Utilitzant l'operador sizeof().

L'operador sizeof és un operador unari en temps de compilació que calcula la mida de les variables i els tipus de dades. Retorna un valor enter que representa la mida de l'expressió o una variable en bytes. L'operador sizeof s'utilitza principalment per a l'assignació de memòria dinàmica, però també es pot utilitzar per trobar la longitud d'una matriu.

El truc és trobar primer la mida de tota la matriu en bytes i la mida d'un sol element mitjançant l'operador sizeof i després dividir la mida de tota la matriu per la mida d'un sol element de manera que puguem obtenir el nombre d'elements. a la matriu.



Sintaxi:

data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>

En la sintaxi anterior,

    data_type: És el tipus de variable en què volem emmagatzemar la longitud de la matriu (com int, size_t, etc.). Array_name: és el nom de la matriu de la qual voleu trobar la mida. sizeof (nom_matriu): It és un operador que retorna la mida de tota la matriu en bytes. sizeof(Array_name[índex]): retorna la mida d'un sol element de la matriu en bytes. índex: és l'índex de qualsevol element de la matriu.

Exemple:

C


arbre binari en java



// C Program to calculate size of an array using sizeof()> // operator> #include> int> main()> {> >int> Arr[] = { 1, 2, 3, 4, 5 };> > >// variable to store size of Arr> >int> length =>sizeof>(Arr) />sizeof>(Arr[0]);> >printf>(>'The length of the array is: %d '>, length);> >return> 0;> }>

>

>

Sortida

The length of the array is: 5>

Complexitat temporal: O(1) ja que només s'han fet operacions de temps constant.

Complexitat espacial: O(1) ja que no s'ha utilitzat cap espai addicional.

2. Ús de l'aritmètica de punters

També podem calcular la longitud d'una matriu en C mitjançant l'aritmètica de punters. Aquesta solució d'utilitzar un punter és només un hack que s'utilitza per trobar el nombre d'elements d'una matriu.

Sintaxi:

 data_type length = *(&arr + 1) - arr;>

En la sintaxi anterior:

    &arr: punter a una matriu d'elements. (&arr + 1): l'adreça de la memòria davant de la matriu, ja que el tipus de punter és un punter a una matriu d'enters. *(&arr + 1) – arr: diferència inclosa entre l'inici i el final de la matriu

Exemple:

C




gestor de tasques linux
// C Program to calculate size of an array using pointer arithmetic> #include> int> main()> {> >int> Arr[] = { 1, 2, 3, 4, 5, 6 };> >// variable to store the size of Arr> >int> length = *(&Arr + 1) - Arr;> >printf>(>'Number of elements in Arr[] is: %d'>, length);> >return> 0;> }>

>

>

Sortida

Number of elements in Arr[] is: 6>

3. Ús de Loop

El mètode de bucle s'utilitza per calcular la longitud d'una matriu en C. Itera per tots els elements d'una matriu i augmenta el recompte.

Exemple:

C




// C Program to calculate size of an array using loop> #include> > int> arr_length(>int> arr[])> {> >int> i;> >int> count = 0;> >for>(i=0; arr[i]!=>' '>; i++)> >{> >count++;> >}> >return> count;> }> > int> main()> {> >int> arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};> >int> n;> > >n = arr_length(arr);> >printf>(>'Length of Array is: %d'>, n);> > >return> 0;> }> // This code is contributed by Susobhan Akhuli>

>

>

Sortida

verilog sempre
Length of Array is: 10>

Complexitat temporal: O(n) on n és el nombre d'elements de la matriu.

Complexitat espacial: O(1) ja que no s'ha utilitzat cap espai addicional.

Nota: Tingueu en compte que aquests mètodes només funcionen quan la matriu es declara en el mateix àmbit. Aquests mètodes fallaran si els provem en una matriu que es passa com a punter. Això passa a causa de Array Decay.

Els mètodes iteratius per trobar la longitud de les cadenes (matriu de caràcters) tampoc no es poden aplicar a la matriu d'altres tipus, ja que no hi ha cap indicador final en aquests tipus de matriu a diferència del ' ' NULL caràcter que marca el final de la cadena.