C struktūras un norādes (ar piemēriem)

Šajā apmācībā jūs iemācīsities izmantot rādītājus, lai piekļūtu struktūru dalībniekiem C programmēšanā. Jūs arī iemācīsities dinamiski piešķirt struktūras tipu atmiņu.

Pirms uzzināt, kā rādītājus var izmantot ar struktūrām, noteikti pārbaudiet šīs apmācības:

  • C Norādes
  • C strukt

C Norādes uz strukturēšanu

Lūk, kā jūs varat izveidot norādes uz struktūrām.

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

Šeit ptr ir norāde uz struct.

Piemērs: Piekļūstiet dalībniekiem, izmantojot rādītāju

Lai piekļūtu struktūras dalībniekiem, izmantojot rādītājus, mēs izmantojam ->operatoru.

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

Šajā piemērā person1 adrese tiek saglabāta personPtr rādītājā, izmantojot personPtr = &person1;.

Tagad varat piekļūt person1 dalībniekiem, izmantojot personPtrrādītāju.

Starp citu,

  • personPtr->age ir ekvivalents (*personPtr).age
  • personPtr->weight ir ekvivalents (*personPtr).weight

Struktūru dinamisks atmiņas sadalījums

Pirms turpināt šo sadaļu, iesakām pārbaudīt C dinamiskās atmiņas piešķiršanu.

Dažreiz jūsu deklarēto strukturālo mainīgo skaits var būt nepietiekams. Iespējams, izpildes laikā jums būs jāpiešķir atmiņa. Lūk, kā jūs to varat sasniegt C programmēšanā.

Piemērs: Struktūru dinamisks atmiņas sadalījums

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

Palaidot programmu, izeja būs:

 Ievadiet personu skaitu: 2 Ievadiet attiecīgi vārdu un vecumu: Harijs 24 Ievadiet attiecīgi vārdu un vecumu: Gerijs 32 Parāda informāciju: Vārds: Harijs Vecums: 24 Vārds: Gerijs Vecums: 32

Iepriekš minētajā piemērā tiek izveidots n strukturālo mainīgo skaits, kur lietotāju ievadījis n.

Lai piešķirtu atmiņu n strukturētas personas skaitam, mēs izmantojām

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

Pēc tam mēs izmantojām ptr rādītāju, lai piekļūtu personas elementiem.

Interesanti raksti...