C struktury a ukazatele (s příklady)

V tomto kurzu se naučíte používat ukazatele pro přístup ke členům struktur v programování C. Naučíte se také dynamicky alokovat paměť typů struktur.

Než se dozvíte, jak lze ukazatele použít se strukturami, nezapomeňte zkontrolovat tyto výukové programy:

  • Ukazatele C.
  • C struktura

C Ukazatele na strukturu

Zde je návod, jak můžete vytvořit ukazatele na struktury.

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

Zde je ptr ukazatel na struct.

Příklad: Přístup ke členům pomocí ukazatele

Pro přístup k členům struktury pomocí ukazatelů používáme ->operátor.

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

V tomto příkladu je adresa person1 uložena v ukazateli personPtr pomocí personPtr = &person1;.

Nyní můžete přistupovat k členům person1 pomocí personPtrukazatele.

Mimochodem,

  • personPtr->age je ekvivalentní k (*personPtr).age
  • personPtr->weight je ekvivalentní k (*personPtr).weight

Dynamická alokace paměti struktur

Než budete pokračovat v této části, doporučujeme vám zkontrolovat dynamickou alokaci paměti C.

Počet deklarovaných strukturních proměnných může být někdy nedostatečný. Možná budete muset přidělit paměť během běhu. Tady je způsob, jak toho dosáhnout v programování C.

Příklad: Dynamické přidělování paměti strukturám

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

Když spustíte program, výstup bude:

 Zadejte počet osob: 2 Zadejte křestní jméno a věk: Harry 24 Zadejte křestní jméno a věk: Gary 32 Zobrazení informací: Jméno: Harry Věk: 24 Jméno: Gary Věk: 32

Ve výše uvedeném příkladu je vytvořeno n počet strukturních proměnných, kde n je zadáno uživatelem.

K alokaci paměti pro n počet strukturovaných osob jsme použili,

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

Poté jsme použili ukazatel ptr pro přístup k prvkům osoby.

Zajímavé články...