C Структура и функция
Структура и функции C
В этом руководстве вы научитесь передавать структурные переменные в качестве аргументов функции. Вы научитесь возвращать структуру из функции с помощью примеров.
Подобно переменным встроенных типов, вы также можете передавать структурные переменные в функцию.
<час>Передача структур в функции
Мы рекомендуем вам изучить эти руководства, прежде чем вы научитесь передавать структуры в функции.
- Структуры
- Функции C
- Пользовательская функция
Вот как вы можете передавать структуры в функцию
#include <stdio.h>
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 \n is entered
// \n is discarded
scanf("%[^\n]%*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("\nDisplaying information\n");
printf("Name: %s", s.name);
printf("\nAge: %d", s.age);
}
Вывод
Enter name: Bond Enter age: 13 Displaying information Name: Bond Age: 13
Здесь структурная переменная s1 типа struct student
создано. Переменная передается в display()
функция с использованием display(s1);
заявление.
Возвращает структуру из функции
Вот как можно вернуть структуру из функции:
#include <stdio.h>
struct student
{
char name[50];
int age;
};
// function prototype
struct student getInformation();
int main()
{
struct student s;
s = getInformation();
printf("\nDisplaying information\n");
printf("Name: %s", s.name);
printf("\nRoll: %d", s.age);
return 0;
}
struct student getInformation()
{
struct student s1;
printf("Enter name: ");
scanf ("%[^\n]%*c", s1.name);
printf("Enter age: ");
scanf("%d", &s1.age);
return s1;
}
Здесь getInformation()
функция вызывается с использованием s = getInformation();
утверждение. Функция возвращает структуру типа struct student
. Возвращаемая структура отображается из main()
функция.
Обратите внимание, что возвращаемый тип getInformation()
также struct student
.
Передача структуры по ссылке
Вы также можете передавать структуры по ссылке (подобно тому, как вы передаете переменные встроенного типа по ссылке). Перед тем, как продолжить, мы рекомендуем вам прочитать справочное руководство.
При передаче по ссылке в функцию передаются адреса памяти структурных переменных.
#include <stdio.h>
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,\n");
printf("Enter real part: ");
scanf("%f", &c1.real);
printf("Enter imaginary part: ");
scanf("%f", &c1.imag);
printf("For second number, \n");
printf("Enter real part: ");
scanf("%f", &c2.real);
printf("Enter imaginary part: ");
scanf("%f", &c2.imag);
addNumbers(c1, c2, &result);
printf("\nresult.real = %.1f\n", 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;
}
Вывод
For first number, Enter real part: 1.1 Enter imaginary part: -2.4 For second number, Enter real part: 3.4 Enter imaginary part: -3.2 result.real = 4.5 result.imag = -5.6
В приведенной выше программе три структурные переменные c1 , c2 и адрес результата передается в addNumbers()
функция. Здесь результат передается по ссылке.
Когда результат переменная внутри addNumbers()
изменен, результат переменная внутри main()
функция также изменена соответствующим образом.
Язык C