C struktūros ir rodyklės (su pavyzdžiais)

Šioje pamokoje sužinosite, kaip naudotis rodyklėmis, norint pasiekti C programavimo struktūrų narius. Taip pat išmoksite dinamiškai paskirstyti struktūros tipų atmintį.

Prieš sužinodami, kaip rodykles galima naudoti su struktais, būtinai patikrinkite šias pamokas:

  • C Rodyklės
  • C strukt

C Struktūros nuorodos

Štai kaip galite sukurti nuorodų į struktūras.

 struct name ( member1; member2;… ); int main() ( struct name *ptr, Harry; )

Čia ptr yra nuoroda į struct.

Pavyzdys: prieiga prie narių naudojant žymeklį

Norėdami pasiekti struktūros narius naudodami rodykles, mes naudojame ->operatorių.

 #include struct person ( int age; float weight; ); int main() ( struct person *personPtr, person1; personPtr = &person1; printf("Enter age: "); scanf("%d", &personPtr->age); printf("Enter weight: "); scanf("%f", &personPtr->weight); printf("Displaying:"); printf("Age: %d", personPtr->age); printf("weight: %f", personPtr->weight); return 0; )

Šiame pavyzdyje asmens1 adresas yra saugomas „personPtr“ žymeklyje naudojant personPtr = &person1;.

Dabar galite pasiekti „person1“ narius naudodami personPtržymeklį.

Beje,

  • personPtr->age yra lygiavertis (*personPtr).age
  • personPtr->weight yra lygiavertis (*personPtr).weight

Dinamiškas struktūros atminties paskirstymas

Prieš tęsdami šį skyrių, rekomenduojame patikrinti C dinaminės atminties paskirstymą.

Kartais jūsų deklaruotų struktūrinių kintamųjų skaičius gali būti nepakankamas. Gali tekti paskirstyti atmintį vykdymo metu. Štai kaip galite tai pasiekti naudodami C programavimą.

Pavyzdys: Dinaminis atminties paskirstymas struktūroms

 #include #include struct person ( int age; float weight; char name(30); ); int main() ( struct person *ptr; int i, n; printf("Enter the number of persons: "); scanf("%d", &n); // allocating memory for n numbers of struct person ptr = (struct person*) malloc(n * sizeof(struct person)); for(i = 0; i name and ptr->age is used // To access members of 2nd struct person, // (ptr+1)->name and (ptr+1)->age is used scanf("%s %d", (ptr+i)->name, &(ptr+i)->age); ) printf("Displaying Information:"); for(i = 0; i name, (ptr+i)->age); return 0; ) 

Kai paleisite programą, išvestis bus:

 Įveskite asmenų skaičių: 2 Įveskite atitinkamai vardą ir amžių: Harry 24 Įveskite vardą ir amžių: Gary 32 Rodoma informacija: Vardas: Harry Amžius: 24 Vardas: Gary Amžius: 32

Ankstesniame pavyzdyje sukuriamas n struktūrinių kintamųjų skaičius, kai vartotojas įveda n.

Norėdami priskirti atmintį n struktūrizuoto asmens skaičiui, mes

 ptr = (struct person*) malloc(n * sizeof(struct person));

Tada mes naudojome ptr žymeklį norėdami pasiekti asmens elementus.

Įdomios straipsniai...