Hvad er pointer i C?
Markøren i C er en variabel, der gemmer adressen på en anden variabel. En markør kan også bruges til at henvise til en anden markørfunktion. En markør kan forøges / dekrementeres, dvs. for at pege på den næste / forrige hukommelsesplacering. Pointerens formål er at spare hukommelsesplads og opnå hurtigere udførelsestid.
Sådan bruges markører i C
Hvis vi erklærer en variabel v af typen int, gemmer v faktisk en værdi.
v er lig med nul nu.
Hver variabel har dog bortset fra værdi også sin adresse (eller, ganske enkelt, hvor den er placeret i hukommelsen). Adressen kan hentes ved at sætte et ampersand (&) foran variabelnavnet.
Hvis du udskriver adressen på en variabel på skærmen, ser den ud som et helt tilfældigt tal (desuden kan det være forskelligt fra løb til løb).
Lad os prøve dette i praksis med markør i C eksempel
Resultatet af dette program er -480613588.
Hvad er en markør nu? I stedet for at gemme en værdi vil en markør y gemme adressen på en variabel.
Markørvariabel
Int * y = & v;
VARIABEL
|
POINTER
|
En værdi gemt i en navngivet lager- / hukommelsesadresse
|
En variabel, der peger på lager- / hukommelsesadressen for en anden variabel
|
Erklæring om en pointer
Ligesom variabler, markører i C progra mming skal erklæres, før de kan bruges i dit program. Markører kan navngives alt, hvad du vil, så længe de overholder C’s navngivningsregler. En markørerklæring har følgende form.
data_type * pointer_variable_name;
Her,
- data_type er markørens basistype af C’s variabeltyper og angiver typen af variablen, som markøren peger på.
- Stjernen (*: den samme stjerne, der blev brugt til multiplikation), som er indirection operator, erklærer en pointer.
Lad os se nogle gyldige pointerdeklarationer i denne C-pointer-tutorial:
Initialiser en pointer
Efter at have erklæret en markør initialiserer vi den som standardvariabler med en variabel adresse. Hvis markører i C-programmering ikke er uinitialiseret og bruges i programmet, er resultaterne uforudsigelige og potentielt katastrofale.
For at få adressen på en variabel bruger vi ampersand-operatøren (&), placeret foran navnet på en variabel, hvis adresse vi har brug for. Pointerinitialisering udføres med følgende syntaks.
Pointer Syntax
pointer = &variable;
Et simpelt program til pointerillustration er angivet nedenfor:
Output:
Address stored in a variable p is:60ff08Value stored in a variable p is:10
Operatør |
Betydning |
* |
Serverer 2 formål
- Erklæring om en markør
- Returnerer værdien for den refererede variabel
|
& |
Serverer kun 1 formål
- Returnerer adressen på en variabel
|
Typer af markører i C
Følgende er de forskellige typer markører i C:
Null Pointer
Vi kan oprette en nulpointer ved at tildele nulværdi under pointerdeklarationen. Denne metode er nyttig, når du ikke har tildelt nogen adresse til markøren. En nul pointer indeholder altid værdien 0.
Følgende program illustrerer brugen af en nul pointer:
#include <stdio.h>int main(){int *p = NULL; //null pointerprintf("The value inside variable p is:\n%x”,p);return 0;}
Output:
The value inside variable p is:0
Void Pointer
I C-programmering kaldes en ugyldig pointer også som en generisk pointer. Den har ikke nogen standard datatype. En ugyldig markør oprettes ved hjælp af nøgleordet ugyldigt. Den kan bruges til at gemme en adresse på enhver variabel.
Følgende program illustrerer brugen af en ugyldig markør:
#include <stdio.h>int main(){void *p = NULL; //void pointerprintf("The size of pointer is:%d\n",sizeof(p));return 0;}
Output:
The size of pointer is:4
Vilde markører
En markør siges at være en vildmarkør, hvis den ikke initialiseres til noget. Disse typer C-markører er ikke effektive, fordi de kan pege på en ukendt hukommelsesplacering, som kan forårsage problemer i vores program, og det kan føre til nedbrud på programmet. Man skal altid være forsigtig, når man arbejder med vilde pegepinde.
Følgende program illustrerer brugen af vildmarkør:
#include <stdio.h>int main(){int *p; //wild pointerprintf("\n%d",*p);return
read more