Структуре и смернице (са примерима)

У овом упутству научићете да користите показиваче за приступ члановима структура у програмирању на језику Ц. Такође ћете научити да динамички додељујете меморију структурних типова.

Пре него што научите како се показивачи могу користити са структурама, обавезно проверите ове водиче:

  • Ц Показивачи
  • Ц струцт

Ц Показивачи на структ

Ево како можете створити показиваче на структуре.

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

Овде је птр показивач на struct.

Пример: Приступите члановима помоћу показивача

За приступ члановима структуре помоћу показивача користимо ->оператор.

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

У овом примеру, адреса персон1 се чува у показивачу персонПтр помоћу personPtr = &person1;.

Сада члановима персон1 можете приступити помоћу personPtrпоказивача.

Између осталог,

  • personPtr->age је еквивалентно са (*personPtr).age
  • personPtr->weight је еквивалентно са (*personPtr).weight

Динамичка алокација структура у меморији

Пре него што наставите са овим одељком, препоручујемо вам да проверите динамичко додељивање меморије Ц.

Понекад је број променљивих структуре који сте прогласили можда недовољан. Можда ћете морати да доделите меморију током времена извршавања. Ево како то можете постићи у програмирању на језику Ц.

Пример: Динамичко додељивање меморије структура

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

Када покренете програм, излаз ће бити:

 Унесите број особа: 2 Унесите име и старост: Харри 24 Унесите име и доб: Гари 32 Приказивање података: Име: Харри Старост: 24 Име: Гари Старост: 32

У горњем примеру, креира се н броја променљивих структуре, где н уноси корисник.

Да бисмо доделили меморију за н број структурираних особа, користили смо,

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

Затим смо користили птр показивач за приступ елементима особе.

Занимљиви Чланци...