Структура и функции C

В этом руководстве вы научитесь передавать структурные переменные в качестве аргументов функции. Вы научитесь возвращать структуру из функции с помощью примеров.

Подобно переменным встроенных типов, вы также можете передавать в функцию структурные переменные.

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

Мы рекомендуем вам изучить эти руководства, прежде чем вы узнаете, как передавать структуры функциям.

  • 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 result.real = 4.5 result.imag = -5.6 

В приведенной выше программе addNumbers()функции передаются три структурные переменные c1, c2 и адрес результата . Здесь результат передается по ссылке.

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

Интересные статьи...