Norādes ir ļoti svarīgas daudzām C programmām, taču tās var būt grūti saprotamas. Pārskatiet to sintaksi un to darbību, izmantojot praktiskus piemērus.

Norādes ir būtisks C programmēšanas aspekts, kas jums ir labi jāizprot, lai valodu lietotu efektīvi. Tie palīdz efektīvi pārvaldīt atmiņu, nodot datus pēc atsauces, apstrādāt masīvus un virknes un daudz ko citu. Tomēr tie ir rūpīgi jāizmanto, lai izvairītos no kļūdām.

Izpētiet C rādītāju detaļas, sākot no atmiņas un adrešu izpratnes līdz rādītāja aritmētikas apguvei.

Atmiņa un adreses

Atmiņa — bieži tiek izmantota kā saīsinājums RAM (brīvpiekļuves atmiņa)— ir krātuve datorā, kurā glabājas dati un instrukcijas, kas nepieciešamas programmai. Tā kalpo kā jūsu programmas darbvieta. Mazākā atmiņas vienība parasti ir baits, kas ir vienāds ar astoņiem bitiem.

Katrai atmiņas vietai ir unikāla adrese, un atkarībā no datora var saglabāt atšķirīgu datu apjomu. Kad jūs deklarējat mainīgo C valodā, jūs tam netieši piešķirat atmiņas vietu, lai saglabātu tā datus. Padomājiet par to kā par māju, kurai ir unikāla adrese, ko varat izmantot, lai to atrastu.

instagram viewer

Iedomājieties sava datora atmiņu kā uzglabāšanas šūnu virkni, katrā no kurām ir datu baits. Pieņemsim, ka ir divi mainīgie, x un y, C programmā:

int x = 5;
int y = 10;

Atmiņā tas varētu izskatīties šādi:

Adrese

Dati

1000

5

1004

10

Šeit šie mainīgie tiek glabāti atsevišķās atmiņas vietās. Dati, kas x apzīmē atrodas atmiņas adresē 1000, kamēr ydati aizņem atmiņas adresi 1004.

Atmiņas un adrešu izpratne ir ļoti svarīga, strādājot ar rādītājiem, jo ​​tie ir mainīgie, kas glabā atmiņas adreses. Tie ļauj piekļūt un manipulēt ar datiem, kas saglabāti noteiktā atmiņas vietā.

Rādītāju deklarēšana un inicializācija C

Lai varētu modificēt datus, izmantojot norādes programmā C, tie ir jādeklarē un jāinicializē.

Deklarācija

Lai deklarētu rādītāju, ir jānorāda datu tips, uz kuru tas norāda, kam seko zvaigznīte (*) un rādītāja nosaukums. Piemēram:

int *ptr;

Šeit, int *ptr paziņo rādītājs ar nosaukumu ptr kas var saglabāt vesela skaitļa atmiņas adresi.

Inicializācija

Pēc deklarēšanas tas ir jāinicializē ar atmiņas adresi, uz kuru tā norādīs. Varat to inicializēt šādi:

int x = 5;
int *ptr = &x;

Šajā deklarācijā & operators iegūst x mainīgā adresi. Kods būtībā saka: "ptr ir mainīgs, tas saglabā vesela skaitļa vērtības atmiņas vietu, un šī vieta ir visur, kur x pašlaik attiecas."

Tagad ptr satur vesela skaitļa mainīgā adresi x. Piemēram:

Mainīgs

Adrese

Vērtība

x

1000

5

ptr

1000

Norādītāji C ne tikai saglabā mainīgā lieluma adresi, bet arī tiem ir sava unikālā adrese datora atmiņā.

Atsauces norādes

C rādītāja atsauces atcelšana nozīmē piekļuvi vērtībai, kas saglabāta atmiņas adresē, uz kuru norādīja rādītājs.

Pieņemsim, ka jums ir rādītājs, int *ptr, kas norāda uz veselu mainīgo lielumu, un šī mainīgā vērtība ir 10. Lai piekļūtu vērtībai, izmantojot rādītāju, izmantojiet zvaigznīti (*) operators:

int x = 10;

int *ptr = &x; // ptr points to the address of x

int value = *ptr; // Dereferencing ptr to get the value

Šajā piemērā tiek izmantots ptr mainīgais, lai izgūtu vērtību atmiņas adresē, uz kuru tas norāda. Tātad, vērtību tagad ir vērtība 10, kas ir saturs x.

Rādītāja aritmētika

Rādītāja aritmētika ir spēcīgs C līdzeklis, īpaši noderīgs darbam ar masīviem un virknēm (kas ir rakstzīmju masīvi). Tas ļauj veikt aritmētiskas darbības ar rādītājiem, lai pārvietotos atmiņā.

Šeit ir piemērs, kas parāda, kā varat to izmantot.

Sāciet, deklarējot veselu skaitļu masīvu:

int numbers[] = {10, 20, 30};

Deklarējiet rādītāju uz int un piešķiriet tam skaitļu masīva atmiņas vietu:

int *ptr = numbers;

Šeit nav jāizmanto operators "&", jo skaitļi jau netieši ir rādītāja veids.

Mainīgais ptr tagad norāda uz pirmo masīva elementu:

printf("%d\n", *ptr); // 10

Varat pārvietot rādītāju uz trešo masīva elementu, palielinot to par 2:

ptr += 2;
printf("%d\n", *ptr); // 30

Varat pārvietot rādītāju atpakaļ, atņemot no tā:

ptr--;
printf("%d\n", *ptr); ;// 20

Rādītāja aritmētika ir īpaši noderīga, lai pārvietotos masīvos un strādātu ar dinamisku atmiņas piešķiršanu.

Norādes un funkcijas C

Ja jūs saprast, kā funkcijas darbojas C programmēšanā, tad esat labi paspējis izmantot funkciju norādes. Šeit ir daži veidi, kā tos izmantot.

Funkciju rādītāji

Varat deklarēt un izmantot funkciju norādes, lai funkcijas izmantotu dinamiski, tāpat kā jebkuru citu vērtību. Tas ir īpaši noderīgi atzvanīšanai un dinamisku funkciju izpildei.

int (*operation)(int, int); // Declare a function pointer
operation = add; // Pointer to an add function
int result = operation(5, 3); // Call the function through the pointer

Šis kods deklarē funkcijas rādītāju ar nosaukumu darbība kas var norādīt uz funkciju, kas ņem divus veselus skaitļus un atgriež vienu. Tas piešķir (rādītāju) pievienot funkciju darbība. Pēc tam tas izmanto darbības mainīgo, lai netieši izsauktu pievienot (5, 3).

Ejot garām atsaucei

Rādītāji ļauj nodot argumentus, atsaucoties uz funkcijām, ļaujot mainīt sākotnējos datus funkcijas ietvaros. Tas ir ļoti svarīgi funkcijām, kurām ir jāmaina mainīgā vērtība ārpus to darbības jomas.

voidmodifyValue(int *x){
*x = 42; // Modifies the value of x in the calling code
}

The modifyValue funkcija maina jebkura argumenta vērtību, ko tai nodrošina izsaucošais kods, iestatot to uz 42.

Dinamiskā atmiņas piešķiršana

Funkcijas var atgriezt norādes uz dinamiski piešķirto atmiņu. Tas ir izplatīts, ja nepieciešams izveidot un atgriezt neierobežotas datu struktūras, piemēram, masīvus vai saistītos sarakstus. Jums būs nepieciešams labi pārzināt kaudzes un kaudzes atmiņu lai to izmantotu.

int *createArray(intsize){
int *arr = (int *)malloc(size * sizeof(int));
return arr;
}

Šis kods definē funkciju, izveidotArray, tas aizņem veselu skaitli, Izmērs, kā ievade. Funkcijā tā dinamiski piešķir atmiņu noteikta izmēra veselam skaitļu masīvam, izmantojot malloc. Pēc masīva inicializācijas tas atgriež rādītāju uz šo jaunizveidoto masīvu.

Kopējie lietojumi

Norādes ir būtiskas C valodā vairāku iemeslu dēļ, un tās arī ir atšķirt C no citām programmēšanas valodām, piemēram, Python. Šeit ir daži izplatīti lietojumi:

  • Dinamiskā atmiņas piešķiršana
  • Masīva manipulācijas
  • Ejot garām atsaucei
  • Datu struktūras
  • Resursu pārvaldība

Izpratne par šiem bieži sastopamajiem norāžu lietojumiem var uzlabot jūsu C programmēšanas prasmes. Praktizējiet dažus no tiem, lai uzlabotu savu izpratni par norādēm.

Praktizējiet rādītāju izmantošanu C programmēšanā

Norāžu apgūšana C programmēšanā ir vērtīga prasme, kas ļauj efektīvi pārvaldīt atmiņu, manipulēt ar datiem un veikt papildu darbības. Prakse un prasme izmantot norādes ievērojami uzlabos jūsu spēju izveidot spēcīgas un resursefektīvas C programmas.