工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
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  

上記のプログラムでは、3 つの構造体変数 c1 , c2 そして結果のアドレス addNumbers() に渡されます 関数。ここで、結果 参照によって渡されます。

結果addNumbers() 内の変数 結果 main() 内の変数 関数もそれに応じて変更されます。


C言語

  1. C# 構造体
  2. C++ フレンド関数とフレンド クラス
  3. C構造体
  4. C 構造体とポインター
  5. C - プログラム構造
  6. C - データ型
  7. C - 定数とリテラル
  8. C - 関数
  9. C++ オーバーロード (演算子と関数)
  10. 電気変圧器:機能、構造など
  11. 旋盤の15の異なる部品とその機能