Pekere i ca

Pekere i ca

Pointer er et veldig viktig konsept på C -språk fordi pekeren gir oss adressebegrepet i minnet. Alt som ikke er tilgjengelig av de andre, kan pekeren få tilgang til dette veldig enkelt ved hjelp av adresse.

Her vil vi diskutere det grunnleggende konseptet med pekeren.

Objektiv:

Hovedmålet med pekeren er hovedsakelig:

  1. Utvidet pekerbegrep
  2. Pekerens aritmetikk

Utvidet pekerbegrep:

X p q r
1000 2000 3000 4000

Eksempel:

1
2
3
4
5
6
7
8
9
10
11
12
1. 3
14
15
#inkludere
Tomrom ()

Int x = 5, *p, ** q, *** r;
p = & x;
q = & p;
r = & q;
** Q = 7;
*** r = 7;

Forklaring:

Her P er en peker. Fra linjen P = & x er det forståelse at P er en peker som holder adressen til x .

** Q er også en en slags peker hvis indireksjonsnivå er 2 og R er også en peker hvis indireksjonsnivå er 3. Hvor mange * er det som er nivået på den pekeren?

Regelen er at pekernivået er slik at den holder adressen til en annen variabel hvis indireksjonsnivå er nøyaktig en mindre av den pekeren.

For denne Q holder adressen til P. P holder adressen til x.

Prosedyren for å lese linjen int x = 5,*p, ** q, *** r;

x er en int. P er en peker til en int. Q er en peker til apokerer til en int. Hvor mange er det? Vi sier nøyaktig samme nei av ordpekeren. Akkurat som ** r, det betyr at r er en peker, for en peker, til en peker til en int.

Hvis vi setter litt verdi ved hjelp av Q, skriver vi

1
*q = p, *r = q, *p = x;

Hvis vi skriver en peker eller * før en pekervariabel, blir den til en slik variabel som peker på variabelt gjennomsnitt, P -blokk.

Pekere aritmetikk:

Vi kan ikke legge til multipliser eller dele i to adresser (subtraksjon er mulig).

Vi kan ikke multiplisere et heltall til en adresse. Tilsvarende kan vi ikke dele en adresse med en heltallverdi.

Programmering Eksempel 1:

1
2
3
4
5
6
7
8
9
10
11
12
1. 3
14
15
16
17
18
19
20
21
#inkludere
tomrom ()

int a, b;
int *p, *q;
p = & a;
q = & b;
printf (" %d", p + q);
printf (" %d", p * q);
printf (" %d", p / q);

Produksjon:

Forklaring:

I det ovennevnte programmet prøver vi å legge til, multiplisere og dele de to adressene ved å skrive noen uttalelser.

1
2
3
4
5
printf (" %d", p + q);
printf (" %d", p * q);
printf (" %d", p / q);

Men det er ikke mulig som du kan se fra utgangen. Pekeren gir aldri tillatelse til å legge til, multiplisere og dele opp litt adresse.

Pekeren kan tillate noe matematisk beregning. De er nevnt nedenfor:

1
2
3
4
5
6
7
P = 1000
P + 1 = 1002
P + 4 = 1008
P - 1 = 998

P er INTEGER TYPE POINTER 1000 som er basert på adressen til en. “A” -variabel har to byte. Adressen til 1. byte er 1001 og adressen til 2. byte er 1002. Hvis vi legger 1 til en peker, gjør det adressen til neste blokk eller neste variabel i stedet for adresse til neste byte.

1
2
3
4
5
Peker + n = peker + størrelse på (type peker) * n
= 1000 + 2 * 1
= 1002

Vi kan trekke fra to adresser av samme type. Pekeren tillater det.

Programmering Eksempel 2:

1
2
3
4
5
6
7
8
9
10
11
12
1. 3
14
#inkludere
tomrom ()

int a, b;
int *p, *q;
p = & a;
q = & b;
printf (" %d", p - q);

Produksjon:

Forklaring:

Her prøver vi å trekke fra to adresser. Heldigvis kan det støtte av pekeren. Det blir ikke bokstavelig talt trukket fra. Den består av en blokk avhengig av datatype.

Formel

1
Peker 1 - Peker 2 = (bokstavelig subtraksjon) / størrelse på (pekertype)

Hvis det er char -type, delt med 4.

Hvis det er float -type, delt med 4.

Hvis det er int -type, delt med 2.

Programmering Eksempel 3:

1
2
3
4
5
6
7
8
9
10
11
12
1. 3
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#inkludere
void Swap (int *, int *);
int main ()

int a, b;
printf ("Skriv inn to nummer");
SCANF ("%D%D", & A, & B);
bytt (& a, & b);
printf ("a = %d b = %d", a, b);

tomrom (int *x, int *y)

int t;
t = *x;
*x = *y;
*y = t;

Produksjon:

Forklaring:

Her kan en peker passere gjennom en funksjon. Dette kalles samtale av referanser. Hvis vi ønsker å bytte to heltall ved å passere verdiene til to heltall gjennom en funksjon, er det ikke mulig.

Vi må passere adressen til variabelen t = & x. Hvis vi legger * til en pekervariabel, ble * X til en slik variabel som holder verdien på variabelen, som den peker P -variabelen. Det betyr t = *x, betyr, t holder verdien av en indirekte.

Ring etter referanser:

Ring etter referanser er det samme som samtale etter adresse. Når formelle argumenter er pekervariabler, kalles det med referanser.

Referanse betyr adresse. Ring med referanse betyr, når vi kaller en funksjon, passerer vi adressene til variablene, det kalles referanseoppfordring.

Et viktig spørsmål kan oppstå relatert til adresse eller hvorfor vi bruker adresse til (&) i Scanf ()?

Scanf () er en forhåndsdefinert funksjon på C -språk. Main () er også en funksjon på C -språk. Vi bruker Scanf () inne i Main (). Så hvis vi erklærer to variabler i Main () -funksjonen, får vi tilgang til denne variabelen i SCANF (). Vi kan ikke bruke variabler av en funksjon til en annen funksjon. Så, Scanf () -funksjonen ønsker å sette en viss verdi til en variabel og B -variabel, så må den kjenne adressen til A og B.

For denne adressen til (&) brukes i Scanf ().

Konklusjon:

Vi kan vite alt det grunnleggende pekerbegrepet. Fra denne diskusjonen har vi kommet til denne konklusjonen at vi uten peker ikke kan visualisere minnehåndteringen på C -språket. Adresse kontrollerer hele minnestyringsordningen. For dette må vi kjenne pekerbegrepet.