Priekšnosacījums: Rādītāji C
Rādītājs uz rādītāju C tiek izmantots, ja vēlamies saglabāt cita rādītāja adresi. Pirmais rādītājs tiek izmantots, lai saglabātu mainīgā lieluma adresi. Un otrais rādītājs tiek izmantots, lai saglabātu pirmā rādītāja adresi. Tāpēc tos sauc arī par divpunktu metieni . Mēs varam izmantot rādītāju uz rādītāju, lai mainītu parasto rādītāju vērtības vai izveidotu mainīga izmēra 2-D masīvu. Dubultais rādītājs aizņem tikpat daudz vietas atmiņas kaudzē kā parastais rādītājs.
Rādītāja deklarācija rādītājam C
Rādītāja deklarēšana rādītājā ir līdzīga rādītāja deklarēšanai valodā C. Atšķirība ir tāda, ka pirms rādītāja nosaukuma ir jāievieto papildu “*”.
galīgā stāvokļa mašīna
data_type_of_pointer **name_of_variable = & normal_pointer_variable;>
int val = 5; int *ptr = &val; // storing address of val to pointer ptr. int **d_ptr = &ptr; // pointer to a pointer declared // which is pointing to an integer.>
Iepriekš redzamā diagramma parāda rādītāja attēlojumu atmiņā rādītājam. Pirmais rādītājs ptr1 saglabā mainīgā adresi, bet otrais rādītājs ptr2 saglabā pirmā rādītāja adresi.
Dubultā rādītāja piemērs C
C
// C program to demonstrate pointer to pointer> #include> int> main()> {> >int> var = 789;> >// pointer for var> >int>* ptr2;> >// double pointer for ptr2> >int>** ptr1;> >// storing address of var in ptr2> >ptr2 = &var;> >// Storing address of ptr2 in ptr1> >ptr1 = &ptr2;> >// Displaying value of var using> >// both single and double pointers> >printf>(>'Value of var = %d
'>, var);> >printf>(>'Value of var using single pointer = %d
'>, *ptr2);> >printf>(>'Value of var using double pointer = %d
'>, **ptr1);> >return> 0;> }> |
>
>
kas ir stropsIzvade
Value of var = 789 Value of var using single pointer = 789 Value of var using double pointer = 789>
Kā darbojas dubultā rādītājs?
Dubultrādītāja darbību var izskaidrot, izmantojot iepriekš redzamo attēlu:
- Dubultrādītājs tiek deklarēts, izmantojot iepriekš parādīto sintaksi.
- Pēc tam mēs saglabājam cita rādītāja adresi kā šī jaunā dubultā rādītāja vērtību.
- Tagad, ja mēs vēlamies manipulēt vai atsaukties uz kādu no tā līmeņiem, mums ir jāizmanto operators Zvaigznīte ( * ), cik reižu mēs vēlamies pazemināt līmeni.
Rādītāja lielums C
C programmēšanas valodā dubultā rādītāja darbība ir līdzīga parastajam rādītājam C. Tātad dubultā rādītāja mainīgā lielums vienmēr ir vienāds ar parastajiem rādītājiem. Mēs to varam pārbaudīt, izmantojot tālāk norādīto C programmu.
1. piemērs: C Programma rādītāja lieluma noteikšanai.
C
// C program to find the size of pointer to pointer> #include> int> main()> {> >// defining single and double pointers> >int> a = 5;> >int>* ptr = &a;> >int>** d_ptr = &ptr;> >// size of single pointer> >printf>(>' Size of normal Pointer: %d
'>,>sizeof>(ptr));> >// size of double pointer> >printf>(>' Size of Double Pointer: %d
'>,>sizeof>(d_ptr));> >return> 0;> }> |
>
>Izvade
Size of normal Pointer: 8 Size of Double Pointer: 8>
Piezīme: Iepriekš minētā koda izvade ir atkarīga arī no izmantotās iekārtas veida. Rādītāja lielums nav fiksēts C programmēšanas valodā, un tas ir atkarīgs no citiem faktoriem, piemēram, CPU arhitektūras un izmantotās OS. Parasti 64 bitu operētājsistēmai izmērs ir 8 baiti, bet 32 bitu operētājsistēmai - 4 baiti.
Divkāršo rādītāju pielietošana C
Tālāk ir norādīti galvenie norādes uz rādītājiem lietojumi C:
gulēt javascript
- Tos izmanto daudzdimensiju masīvu dinamiskajā atmiņas piešķiršanā.
- Tos var izmantot, lai saglabātu daudzlīmeņu datus, piemēram, teksta dokumenta rindkopu, teikumus un vārdu semantiku.
- Tos izmanto datu struktūrās, lai bez kopēšanas tieši manipulētu ar mezglu adresēm.
- Tos var izmantot kā funkciju argumentus, lai manipulētu ar vietējā rādītājā saglabāto adresi.
Daudzlīmeņu norādes valodā C
Dubultās norādes nav vienīgie daudzlīmeņu rādītāji, ko atbalsta C valoda. Ko darīt, ja mēs vēlamies mainīt dubultrādītāja vērtību?
Šajā gadījumā mēs varam izmantot trīskāršo rādītāju, kas būs rādītājs uz rādītāju uz rādītāju, t.i., int ***t_ptr.
Trīskāršā rādītāja sintakse
pointer_type *** pointer_name;>
Līdzīgi, lai mainītu trīskāršā rādītāja vērtību, mēs varam izmantot rādītāju uz rādītāju uz rādītāju uz rādītāju (četru līmeņu rādītājs). Citiem vārdiem sakot, mēs varam teikt, ka, lai mainītu līmeņa vērtību – mainīgais x, mēs varam izmantot līmeni – x+1 rādītāju. Un šo koncepciju var paplašināt.
Piezīme : Mēs varam izmantot jebkuru C līmeņa rādītāju. Tam nav nekādu ierobežojumu, taču tas padara programmu ļoti sarežģītu un neaizsargātu pret kļūdām.
Vajag izlasīt - Funkciju rādītājs C