Pekere i C-programmering: Hva er peker, typer og eksempler

Hva er peker i C?

Pekeren i C, er en variabel som lagrer adressen til en annen variabel. En peker kan også brukes til å referere til en annen pekerfunksjon. En peker kan økes / reduseres, dvs. for å peke til neste / forrige minneplassering. Hensikten med pekeren er å spare minne og oppnå raskere utføringstid.

Hvordan bruke pekere i C

Hvis vi erklærer en variabel v av typen int, vil v faktisk lagre en verdi.

v er lik null nå.

Hver variabel har imidlertid, bortsett fra verdi, også sin adresse (eller, enkelt sagt, der den ligger i minnet). Adressen kan hentes ved å sette et ampersand (&) foran variabelnavnet.

Hvis du skriver ut adressen til en variabel på skjermen, vil den se ut som et helt tilfeldig tall (dessuten kan det være forskjellig fra løp til løp).

La oss prøve dette i praksis med pekeren i C eksempel

Resultatet av dette programmet er -480613588.

Nå, hva er en peker? I stedet for å lagre en verdi, vil en peker y lagre adressen til en variabel.

Pekervariabel

Int * y = & v;

VARIABEL

PEKER

En verdi lagret i en navngitt lagrings- / minneadresse

En variabel som peker på lagrings- / minneadressen til en annen variabel

Deklarere en peker

Som variabler, pekere i C progra mming må deklareres før de kan brukes i programmet ditt. Pekere kan navngis hva du vil så lenge de overholder Cs navngivningsregler. En pekererklæring har følgende skjema.

data_type * pointer_variable_name;

Her,

  • data_type er pekerens basetype av C’s variabeltyper og indikerer typen variabelen som pekeren peker på.
  • Stjernen (*: den samme stjernen som ble brukt for multiplikasjon) som er indireksjonsoperator, erklærer en peker.

La oss se noen gyldige pekererklæringer i denne veiledningen for C-pekere:

Initialiser en peker

Etter å ha erklært en peker initialiserer vi den som standardvariabler med en variabel adresse. Hvis pekere i C-programmering ikke er uinitialisert og brukes i programmet, er resultatene uforutsigbare og potensielt katastrofale.

For å få adressen til en variabel, bruker vi ampersand (&) operatøren, plassert foran navnet på en variabel hvis adresse vi trenger. Pekerinitialisering gjøres med følgende syntaks.

Pointer Syntax

 pointer = &variable; 

Et enkelt program for pekerillustrasjon er gitt nedenfor:

Utgang:

Address stored in a variable p is:60ff08Value stored in a variable p is:10
Operatør Betydning
* Serverer 2 formål

  1. Erklæring om en peker
  2. Returnerer verdien til den refererte variabelen
& Serverer bare 1 formål

  • Returnerer adressen til en variabel

Typer av pekere i C

Følgende er de forskjellige typene pekere i C:

Null Pointer

Vi kan opprette en nullpeker ved å tildele nullverdi under pekerdeklarasjonen. Denne metoden er nyttig når du ikke har tildelt noen adresse til pekeren. En nullpeker inneholder alltid verdien 0.

Følgende program illustrerer bruken av en nullpeker:

#include <stdio.h>int main(){int *p = NULL; //null pointerprintf("The value inside variable p is:\n%x”,p);return 0;}

Utgang:

The value inside variable p is:0

Void Pointer

I C-programmering kalles en tom peker også som en generisk peker. Den har ingen standard datatype. En ugyldig peker opprettes ved å bruke nøkkelordet ugyldig. Den kan brukes til å lagre en adresse til en hvilken som helst variabel.

Følgende program illustrerer bruken av en tom peker:

#include <stdio.h>int main(){void *p = NULL; //void pointerprintf("The size of pointer is:%d\n",sizeof(p));return 0;}

Utgang:

The size of pointer is:4

Villpeker

En peker sies å være en villpeker hvis den ikke initialiseres til noe. Disse typer C-pekere er ikke effektive fordi de kan peke på noe ukjent minneplassering som kan forårsake problemer i programmet vårt, og det kan føre til at programmet krasjer. Man bør alltid være forsiktig når man arbeider med ville pekere.

Følgende program illustrerer bruken av villpekeren:

#include <stdio.h>int main(){int *p; //wild pointerprintf("\n%d",*p);return 0;}

Output

timeout: the monitored command dumped coresh: line 1: 95298 Segmentation fault timeout 10s main

Andre typer pekere i «c» er som følger:

  • Hengende peker
  • Kompleks peker
  • Nær pekeren
  • Fjernpeker
  • Stor peker

Direkte og indirekte tilgangspekere

I C er det to like måter for å få tilgang til og manipulere et variabelt innhold

  • Direkte tilgang: vi bruker variabelnavnet direkte
  • Indirekte tilgang: vi bruker en peker til variabelen

La oss forstå dette ved hjelp av programmet nedenfor

Etter å ha samlet programmet uten feil, blir resultatet:

Direct access, var = 1Indirect access, var = 1The address of var = 4202496The address of var = 4202496Indirect access, var = 48

Pekeraritmetikk i C

Pekeroperasjonene er oppsummert i følgende figur

Pekeroperasjoner

Prioritetsoperasjon (forrang)

Når du arbeider med C-pekere, må vi følge følgende prioritetsregler:

Hvis en P-peker peker på en X-variabel, kan * P brukes hvor som helst X kan skrives.

Følgende uttrykk er ekvivalente:

I sistnevnte tilfelle er parenteser nødvendig: ettersom de unære operatorene * og ++ blir evaluert fra høyre til venstre, uten parentes, pekeren P vil bli inkrementert, ikke objektet som P peker på.

Tabellen nedenfor viser den aritmetiske og grunnleggende operasjonen som kan brukes når du arbeider med C-pekere

Drift Forklaring
Oppgave int * P1, * P2 P1 = P2; P1 og P2 peker på samme heltallvariabel
Inkrementering og dekrementering Int * P1; P1 ++; P1–;
Legge til en forskyvning (konstant) Dette gjør at pekeren kan flytte N-elementer i en tabell. Pekeren økes eller reduseres med N ganger antall byte (r) av variabeltypen. P1 + 5;

C-pekere & Arrays med eksempler

Tradisjonelt har vi få tilgang til matriseelementene ved hjelp av indeksen, men denne metoden kan elimineres ved å bruke pekere. Pekere gjør det enkelt å få tilgang til hvert matriseelement.

Utgang

12345

Hvis du legger til et bestemt tall i en peker, flyttes pekerposisjonen til verdien som oppnås ved en tilleggsoperasjon. Anta at p er en peker som for tiden peker til minneplasseringen 0 hvis vi utfører følgende tilleggsoperasjon, p + 1, så vil den utføre på denne måten:

Pekertillegg / økning

Siden p for tiden peker på plasseringen 0 etter å ha lagt til 1, blir verdien 1, og derav vil pekeren peke på minneplasseringen 1.

C Pekere og strenger med eksempler

En streng er en matrise med tegnobjekter, som slutter med et nulltegn «\ 0». Vi kan manipulere strenger ved hjelp av pekere. Denne pekeren i C-eksemplet forklarer denne delen

Output

First character is:HNext character is:ePrinting all the characters in a stringHelloGuru99!

En annen måte å håndtere strenger på er med en rekke pekere som i det følgende program:

Utgang:

Please remember these materials:ironcoppergold

Fordelene med pekere i C

  • Pekere er nyttige for tilgang til minneplasseringer.
  • Pekere gir en effektiv måte å få tilgang til elementene i en arraystruktur.
  • Pekere brukes til dynamisk minnetildeling så vel som deallocation.
  • Pekere brukes til å danne komplekse datastrukturer som koblet liste, graf, tre osv.

Ulemper med pekere i C

  • Pekere er litt komplekse å forstå.
  • Pekere kan føre til forskjellige feil, som for eksempel segmenteringsfeil, eller kan få tilgang til et minneplassering som ikke er nødvendig i det hele tatt.
  • Hvis en peker blir gitt feil verdi, det kan føre til minnekorrupsjon.
  • Pekere er også ansvarlige for minnelekkasje.
  • Pekere er relativt tregere enn variablene.
  • Programmerere synes det er veldig vanskelig å jobbe med pekerne; derfor er det programmererens ansvar å manipulere en peker nøye.

Sammendrag

  • En peker er ikke noe annet enn et minneplass hvor data lagres.
  • En peker brukes for å få tilgang til minneplasseringen.
  • Det finnes forskjellige typer pekere, for eksempel en nullpeker, villpeker, ugyldig peker og andre typer pekere.
  • Pekere kan brukes med matrise og streng for å få tilgang til elementer mer effektivt.
  • Vi kan lage funksjonspekere for å påkalle en funksjon dynamisk.
  • Aritmetiske operasjoner kan utføres på en peker som er kjent som pekere aritmetikk.
  • Pekere kan også peke på funksjon som gjør det enkelt å ringe til forskjellige funksjoner i tilfelle å definere en rekke pekere.
  • Når du vil håndtere forskjellige variable datatyper, kan du bruk en ugyldig pekepinn for typecast.

Write a Comment

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *