Hvad er forskellen mellem int * a; og int ** a; i C?


Svar 1:

Antag, at vi tager

int i;

int * a;

int ** b;

Nu er a en markør, der gemmer adressen på i, den kaldes markøren, da den peger en adresse, der er af den ene type….

int * a kan gemme adresse på i, da det er en heltalvariabel.

Se nu på int ** b, det er en markør til en markør, du kan se på det som int * (* b) betyder, at det er en markør, der vil pege på en anden markør af heltalstype….

Midler b gemmer adressen på en.

Så vi kan tildele værdier til tre variabler som:

i = 5;

a = & i;

b = & a;

Vigtig:

hvis du udskriver, udskrives i: 5 (værdi).

hvis du udskriver en: adresse på i udskrives.

hvis du udskriver * a: 5 (værdi) udskrives.

hvis du udskriver b: Adresse til en udskrives

hvis du udskriver * b: adresse på i udskrives

hvis du udskriver ** b: 5 (værdi) udskrives.


Svar 2:

Hej, se diagram og kode nedenfor, så får du dit svar. Det er faktisk en pointer-to-pointer-koncept (dobbeltmarkør)

Adresse på variabel num har: 1000

Adressen til Pointer ptr1 er: 2000

Adresse til Pointer ptr2 er: 3000

// ———————- kode ——————— //

#include

int main ()

{

int num = 10;

int * ptr1;

int ** ptr2;

ptr1 = & num;

ptr2 = & ptr1;

printf ("Værdi af num =% d \ n", num);

printf ("Værdi tilgængelig ved * ptr1 =% d \ n", * ptr1);

printf ("Værdi tilgængelig ved ** ptr2 =% d \ n", ** ptr2);

}

Produktion:

Værdi af num = 10

Værdi tilgængelig ved * ptr1 = 10

Værdi tilgængelig ved ** ptr2 = 10