C Структура та функції

У цьому посібнику ви навчитесь передавати структурні змінні як аргументи функції. Ви навчитесь повертати структуру з функції за допомогою прикладів.

Подібно до змінних вбудованих типів, ви також можете передавати структурні змінні функції.

Передача структур функціям

Ми рекомендували вам вивчити ці підручники перед тим, як дізнатися, як передавати конструкції функціям.

  • С структури
  • C-функції
  • Функція, визначена користувачем

Ось як можна передавати структури функції

 #include struct student ( char name(50); int age; ); // function prototype void display(struct student s); int main() ( struct student s1; printf("Enter name: "); // read string input from the user until is entered // is discarded scanf("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); display(s1); // passing struct as an argument return 0; ) void display(struct student s) ( printf("Displaying information"); printf("Name: %s", s.name); printf("Age: %d", s.age); )

Вихідні дані

 Введіть ім'я: Bond Введіть вік: 13 Відображення інформації Ім'я: Bond Вік: 13 

Тут створюється структурна змінна s1 типу struct student. Змінна передається display()функції за допомогою display(s1);оператора.

Повернути структуру з функції

Ось як можна повернути структуру з функції:

 #include struct student ( char name(50); int age; ); // function prototype struct student getInformation(); int main() ( struct student s; s = getInformation(); printf("Displaying information"); printf("Name: %s", s.name); printf("Roll: %d", s.age); return 0; ) struct student getInformation() ( struct student s1; printf("Enter name: "); scanf ("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); return s1; ) 

Тут getInformation()функція викликається за допомогою s = getInformation();оператора. Функція повертає структуру типу struct student. Повернута структура відображається з main()функції.

Зверніть увагу, що тип повернення getInformation()також є struct student.

Передача структури за посиланням

Ви також можете передавати структури за посиланням (аналогічно тому, як передаєте змінні вбудованого типу за посиланням). Перед тим, як продовжити, радимо прочитати навчальний посібник.

Під час передачі за посиланням адреси пам'яті структурних змінних передаються функції.

 #include typedef struct Complex ( float real; float imag; ) complex; void addNumbers(complex c1, complex c2, complex *result); int main() ( complex c1, c2, result; printf("For first number,"); printf("Enter real part: "); scanf("%f", &c1.real); printf("Enter imaginary part: "); scanf("%f", &c1.imag); printf("For second number, "); printf("Enter real part: "); scanf("%f", &c2.real); printf("Enter imaginary part: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("result.real = %.1f", result.real); printf("result.imag = %.1f", result.imag); return 0; ) void addNumbers(complex c1, complex c2, complex *result) ( result->real = c1.real + c2.real; result->imag = c1.imag + c2.imag; ) 

Вихідні дані

 Для першого числа введіть реальну частину: 1.1 Введіть уявну частину: -2.4 Для другого числа введіть реальну частину: 3.4 Введіть уявну частину: -3.2 результат. Real = 4.5 result.imag = -5.6 

У наведеній вище програмі addNumbers()функції передаються три структурні змінні c1, c2 та адреса результату . Тут результат передається за посиланням.

Коли змінна результату всередині функції addNumbers()змінена, змінна результату всередині main()функції також відповідно змінюється.

Цікаві статті...