Introduktion till Arrays in C-programmering

Arrayen är en typ av datastruktur som används för att lagra homogen data på sammanhängande minnesplatser.

Här refererar index till platsen för ett element i matrisen. Låt oss föreställa oss om A (L) är namnet på matrisen där "A" är variabelnamnet och "L" är längden på matrisen, dvs. antalet element som finns i matrisen.

Sedan representerar A (i) elementet i den "i + 1" positionen i arrayen. Till exempel:

A (6) = 72 betyder element på 6 + 1: e plats för matrisen.

Behov av Array

Det hjälper till att representera ett stort antal element med en enda variabel. Det gör det också lättare att lagra tillgång till element i minnesplatsen med hjälp av indexet för matrisen som representerar platsen för ett element i matrisen.

Åtkomst till element i Array

Det är mycket lättare att komma åt alla element i matrisen och kan göras i O (1) -komplexitet

Index för en matris startar från 0 till -1, 0 indikerar det första elementet i matrisen och -1 indikerar det sista elementet i matrisen. På liknande sätt indikerar -2 det sista men ett element i matrisen.

Till exempel:

Låt A vara en matris med längd 7 och en måste komma åt elementet med värdet 94 då måste han använda A (3).

Syntax

printf ("% d", A (3)) - Detta kommer att skriva ut 94 där 3 är det index som vi behöver åtkomst till och a är variabeln i matrisen.

Array-deklaration i C

I C måste matrisen deklareras ordentligt innan den används med namn och längd. Det finns tre syntaxer där vi kan förklara matriser i ac-program

Syntax 1

int A (7) = (21, 56, 32, 52, 63, 12, 48) - Förklara längden och elementen i arrayen

C-program

#include
int main(
int a(7) = (21, 56, 32, 52, 63, 12, 48);
int i;
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Produktion:

Syntax 2

int A () = (21, 56, 32, 52, 63, 12, 48) - Förklara längden på element i array

C-program

#include
int main(
int a() = (21, 56, 32, 52, 63, 12, 48);
int i;
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Produktion:

Syntax 3

int A (7); - Ange endast längden på matrisen.

C-program

#include
int main(
int a(7) ;
int i;
printf(“Please enter the array elements”);
for(i=0;i<7;i++)(
scanf(“%d\n”, &a(i));
)
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Produktion:

Syntax 4

int A (7) = (0); - Ange längden på matrisen och elementet när ett element är detsamma på alla positioner.

C-program

#include
int main(
int a(7)=(0) ;
int i;
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Produktion:

Syntax 5

Förklara längden på arrayen och även värdet på element där alla värden är desamma

Fall1 - int a (3) = ((0..1) = 3) -

Fall 2 - int a (3) = (0); -

Syntax 6

int * a; - Förklarande matris som en pekare till platsen för element.

Inget index utan gränskontroll

Om man försöker få tillgång till elementet utanför matrisens gränser, visas inget fel av kompilatorn istället genererar det en varning. Och ger också en oväntad utgång.

Exempel

a (4) = (2, 3, 4, 5);

Om vi ​​skriver printf (a (4));

Utgången blir 225263545 - Oväntad

Dessutom, i C, är det kompilatoren fel inte att initialisera en matris med fler nummerelement än den angivna längden i deklarationen. Exempelvis visar nedanstående program inte något fel istället.

C-program

#include
int main(
int arr(2)=(10, 22, 56, 32, 45, 89) ;
int i;
printf(“Elements of array are”);
for(i=0;i<2;i++)(
printf(“%d\n”, arr(i));
)
return 0;
)

Produktion:

Återvinning av element i Array

Återvinning av element i en matris och skriva ut dem är en mycket enkel uppgift. Det kräver bara en slinga för att skriva ut n-element i en matris. följaktligen är komplexiteten hos ett sådant program O (n).

För t.ex. låt int a (7) = (23, 56, 8, 944, 58, 24, 5);

Program för att skriva ut elementen i en matris är

C-program

#include
int main(
int arr(7)=(23, 56, 8, 944, 58, 24, 5) ;
int i;
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, arr(i));
)
return 0;
)

Produktion:

Multidimensionell matris

C-språk tillåter också flerdimensionella matriser, dvs. `matriser som kan innehålla element i rader såväl som kolumner.

Deklaration

Medan man deklarerar den flerdimensionella matrisen måste man ange längden på alla dimensioner utom den vänstra eftersom det är valfritt.

Exempel

Att deklarera matris på nedanstående sätt kommer att leda till ett fel eftersom andra dimensioner än vänster mest inte anges.

Int a () () (2) = (

((1, 2), (3, 4)),

((5, 6), (7, 8))

)

Exempel

Nedan är en av de rätta syntaxerna för deklaration av flerdimensionell matris i C.

Int a () (3) = (

(52, 56, 86), (44, 6, 21)

)

Passing Array som parameter i funktion

Ibland när vi gör en funktion kräver vi att funktionen använder ett antal variabler som den behöver ta från olika funktioner. Den tiden måste dessa variabler skickas som en parameter till för det funktionssamtalet. Men så småningom, när antalet variabler ökar, måste vi använda en matris för att passera variabeln eller om vissa operationer behöver utföras på matriserna måste det också uppstå för att passera en komplett matris som en parameter i en funktion. För att skicka en matris som en variabel till funktionen:

1. Ring efter värde

I denna typ av metodsamtal kopieras de faktiska värdena på matrisen till den formella parametern där båda lagras på olika platser, varför varje ändring som görs i värdena inte reflekteras i funktionen.

C-program

#include
Void show( char ch)
(
printf("%c ", ch);
)
int main()
(
char arr() = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
for (int x=0; x<10; x++)
(
show(arr(x));//value of array //elements are passed as an argument
)
return 0;
)

Produktion:

2. Ring med referens

Medan man ringer en funktion när man istället för att överföra de faktiska värdena i arrayen, referensen till variabeln skickas som en parameter, så kallas den som call by reference.

C-program

#include
Void show( char ch)
(
printf("%c ", ch);
)
int main()
(
char arr() = (1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
for (int x=0; x<10; x++)
(
show(&arr(x));//reference of array //elements are passed as an argument
)
return 0;
)

Produktion:

3. Att skicka hela arrayen som ett argument

Exempelvis - Låt arr vara en grupp med 7 element.disp är en funktion för att visa elementen i en matris som tar två argument, först som pekar på den första platsen för matrisen och annan längden på matrisen (var2). funktionen arr-variabeln som pekar på platsen för det första elementet i array och längd dvs 7 passeras.

C-program

#include
void disp( int *var1, int var2)
(
for(int x=0; x (
printf("Value of var_arr(%d) is: %d \n", x, *var1);
/*increment pointer for next element fetch*/
var1++;
)
)
int main()
(
int var_arr() = (12, 22, 38, 85, 65, 66, 77);
disp(var_arr, 7);
return 0;
)
#include
void disp( int *var1, int var2)
(
for(int x=0; x (
printf("Value of var_arr(%d) is: %d \n", x, *var1);
/*increment pointer for next element fetch*/
var1++;
)
)
int main()
(
int var_arr() = (12, 22, 38, 85, 65, 66, 77);
disp(var_arr, 7);
return 0;
)

Produktion:

Memory Allocation of Array

Minnesrepresentation på C-språk anses vara uppdelad i 5 avsnitt enligt nedan: -

  1. Text segment
  2. Initialiserat datasegment
  3. Oinitialiserat datasegment
  4. Stack
  5. Högen

Data, heap och stack är de tre segmenten där matriser kan tilldelas minne för att lagra dess element, samma som andra variabler.

  1. Dynamiska matriser: Dynamiska matriser är matriser som behöver minnesplats för att allokeras vid körning. För denna typ av matriser allokeras minne på heapminnesplatsen.
  2. Globala eller statiska matriser: Dessa är den typ av matriser som tilldelas vid sammanställningstiden. Därför allokeras datasegmentminnet alltid för denna typ av matriser.
  3. Lokala matriser: De matriser som initialiseras i en funktion eller block kallas lokala matriser. Dessa typer av arrayer får minne fördelat på stapelsegmentet.

Karaktär Array

I C betraktas strängar som en endimensionell matris med nolltecken '\ 0' i sin sista position som kompilatorn automatiskt lägger till den.

Till exempel "jag älskar kodning" betraktas som en enda dimension matris i c med längd 14 inklusive '\ 0' karaktär i slutändan.

Förklaring: Det finns två sätt att förklara och initiera teckenuppsättningen-

  1. char str (12) = "i love code";
  2. char str (12) = ('Jag', '', 'l', 'o', 'v', 'e', ​​'', 'c', 'o', 'd', 'e, ' \ 0 ''); - Här måste vi avsluta det med '\ 0' -tecken i slutet.
  3. Char ch (3) = 'modi' - Olaglig deklaration

Tar ingång och utgång

Medan du tar input och visar utdata i C för char array kan '% c' användas scanf () respektive printf () -funktionen.

Samtidigt implementering av samma för strängar "% s" kan användas, men slutar skanna efter förekomsten av första whitespace-karaktär.

C-program:

#include
#include
int main()
(
char str(20);
printf(“Enter a string”);
scanf(“%(^\n)”, &str);
printf(“%s”, str);
return 0;
)

Produktion:

Förutom printf- och scanf-funktioner, tillhandahåller C också strängfunktioner som får () och sätter () för att ignorera vita strängområden under skanning och utskrift.

Slutsats

Array är en typ av datastruktur som används för att lagra den homogena informationen i en sammanhängande minnesplats. Arrays i programmering används som en representation för olika komplexa datastrukturer som ett träd, hög, etc.C-språk tillåter multidimensionella matriser för alla primitiva datatyper. Strängar representeras också som en teckenuppsättning med nolltecknet '\ 0' som det sista tecknet. Arrays i programmering möjliggör snabb återhämtning och direkt åtkomst till element av array med indexet där elementet är lagrat.

Rekommenderade artiklar

Detta är en guide till Arrays i C-programmering. Här diskuterar vi introduktionen, Needs of Array, samt Passing Array-funktioner inkluderar Call by Value, Call by Reference och Passing hele array som ett argument. Du kan också titta på följande artiklar för att lära dig mer -

  1. 3D-matriser i C
  2. Bästa C-kompilatorer
  3. Mönster i C-programmering
  4. Factorial i C.
  5. Guide till Arrays i C #
  6. 3D-matriser i C ++
  7. Guide till Arrays i PHP
  8. C Programmering av matrismultiplikation
  9. PHP Array-funktioner | Typer | exempel

Kategori: