C-struktuurid ja osutid (näidetega)

Selles õpetuses õpite kasutama kursoreid C-programmeerimisel struktuuride liikmetele juurdepääsemiseks. Samuti õpitakse struktuuri tüüpide mälu dünaamiliselt eraldama.

Enne kui saate teada, kuidas kursoreid saab koos struktuuridega kasutada, kontrollige kindlasti neid õpetusi:

  • C Näpunäited
  • C struktuur

C Näpunäited struktureerimiseks

Siit saate teada, kuidas luua joonistele viiteid.

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

Siin on ptr viide struct.

Näide: liikmetele juurdepääs kasutades kursorit

Osutuste abil struktuuri liikmetele juurde pääsemiseks kasutame ->operaatorit.

 #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; )

Selles näites salvestatakse person1 aadress personPtr kursori abil personPtr = &person1;.

Nüüd saate kursori abil juurde pääseda person1 liikmetele personPtr.

Muideks,

  • personPtr->age on samaväärne (*personPtr).age
  • personPtr->weight on samaväärne (*personPtr).weight

Struktuuride dünaamiline mälu jaotamine

Enne selle jaotise jätkamist soovitame teil kontrollida C dünaamilise mälu jaotust.

Mõnikord võib deklareeritud struktuurimuutujate arv olla ebapiisav. Võimalik, et peate tööaja jooksul mälu eraldama. Siit saate teada, kuidas saate seda C-programmeerimisel saavutada.

Näide: struktuuride dünaamiline mälu jaotamine

 #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; ) 

Programmi käivitamisel on väljund järgmine:

 Sisestage isikute arv: 2 Sisestage vastavalt eesnimi ja vanus: Harry 24 Sisestage vastavalt eesnimi ja vanus: Gary 32 Kuvan teavet: Nimi: Harry Vanus: 24 Nimi: Gary Vanus: 32

Ülaltoodud näites luuakse n arv struktuurimuutujaid, kus kasutaja sisestab n.

Mälu eraldamiseks struktureeritud inimese arvule kasutasime

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

Seejärel kasutasime isiku elementidele juurdepääsemiseks ptr-osutit.

Huvitavad Artiklid...