C 構造と機能
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言語