Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык 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

  1. C# структура
  2. Дружественные функции C++ и дружественные классы
  3. C-структура
  4. C-структуры и указатели
  5. C - Структура программы
  6. C — Типы данных
  7. C — константы и литералы
  8. С - Функции
  9. Перегрузка C++ (оператор и функция)
  10. Электрические трансформаторы:функция, структура и многое другое