Cのtypedef

typedef は、既存のデータ型に新しい名前を付けるために使用されるキーワードです。 C の typedef キーワードは、既存のデータ型の名前を再定義するために使用されます。

プログラム内でデータ型の名前を使用するのが難しくなった場合、typedef はユーザー定義のデータ型とともに使用されます。これは、コマンドのエイリアスを定義するのと同様に動作します。

C の typedef 構文

 typedef existing_name alias_name; 

この宣言の後、次を使用できます。 エイリアス名 まるで本物であるかのように 既存の名前 入出力Cプログラム。

C での typedef の例

 typedef long long ll; 

以下は、typedef の使用方法を示す C プログラムです。

C




// C program to implement typedef> #include> // defining an alias using typedef> typedef> long> long> ll;> // Driver code> int> main()> {> > // using typedef name to declare variable> > ll var = 20;> > printf> (> '%ld'> , var);> > return> 0;> }>

出力

20 

C での typedef の使用

C プログラミングにおける typedef の一般的な使用法をいくつか次に示します。

  • typedef キーワードは、他のユーザーがプログラムを理解しやすくするために、既存のデータ型に意味のある名前を付けます。
  • 構造体とともに使用すると、コードの可読性が向上し、構造体を繰り返し入力する必要がなくなります。
  • typedef キーワードをポインターとともに使用して、単一のステートメントで複数のポインターを宣言することもできます。
  • 配列とともに使用して、任意の数の変数を宣言できます。

1.typedef構造体

typedef は、C プログラミング言語の構造体でも使用できます。新しいデータ型を作成して、構造体変数の定義に使用できます。

例 1: typedef を使用して構造体の名前を定義する

C




// C program to implement> // typedef with structures> #include> #include> // using typedef to define an alias for structure> typedef> struct> students {> > char> name[50];> > char> branch[50];> > int> ID_no;> } stu;> // Driver code> int> main()> {> > stu st;> > strcpy> (st.name,> 'Kamlesh Joshi'> );> > strcpy> (st.branch,> 'Computer Science And Engineering'> );> > st.ID_no = 108;> > printf> (> 'Name: %s '> , st.name);> > printf> (> 'Branch: %s '> , st.branch);> > printf> (> 'ID_no: %d '> , st.ID_no);> > return> 0;> }>

出力

Name: Kamlesh Joshi Branch: Computer Science And Engineering ID_no: 108 

2. ポインタを使用した typedef

typedef はポインタに別名を与えるため、ポインタとともに使用することもできます。ポインターは単純な宣言の右側にバインドされるため、Typedef は 1 つのステートメントで複数のポインターを宣言するときに非常に効率的です。

例:

typedef int* Int_ptr; Int_ptr var, var1, var2; 

上記のステートメントでは、var、var1、および var2 が int 型のポインターとして宣言されているため、1 つのステートメントで複数のポインターを宣言するのに役立ちます。

例 2: typedef を使用してポインター型の名前を定義します。

C




// C program to implement> // typedef with pointers> #include> typedef> int> * ptr;> // Driver code> int> main()> {> > ptr var;> > *var = 20;> > printf> (> 'Value of var is %d'> , *var);> > return> 0;> }>

出力

Value of var is 20 

3. 配列を使用した typedef

typedef を配列とともに使用して、その数を増やすこともできます。

例:

typedef int arr[20] 

ここで、arr は 20 個の整数要素の配列のエイリアスです。

// it's same as Arr[20], two-Arr[20][23]; arr Arr, two-Arr[23]; 

例 3: typedef を使用して配列のエイリアスを定義します。

C




// C program to implement typedef with array> #include> typedef> int> Arr[4];> // Driver code> int> main()> {> > Arr temp = { 10, 20, 30, 40 };> > printf> (> 'typedef using an array '> );> > for> (> int> i = 0; i <4; i++) {> > printf> (> '%d '> , temp[i]);> > }> > return> 0;> }>

出力

typedef using an array 10 20 30 40 

C の typedef と #define

C の typedef と #define の主な違いは次のとおりです。

  1. #define は、値のエイリアスも定義できます。たとえば、1 を ONE、3.14 を PI などに定義できます。Typedef は、型にシンボリック名を与えることのみに制限されています。
  2. プリプロセッサは #define ステートメントを解釈し、コンパイラーは typedef ステートメントを解釈します。
  3. #define の末尾にはセミコロンはありませんが、typedef の末尾にはセミコロンがあります。
  4. #define とは対照的に、typedef は定義値をコピーして貼り付けることによって実際に新しい型を定義します。

以下は #define を実装する C プログラムです。

C




// C program to implement #define> #include> // macro definition> #define LIMIT 3> // Driver code> int> main()> {> > for> (> int> i = 0; i printf('%d ', i); } return 0; }>

出力

0 1 2 

C の typedef に関する FAQ

1. C の typedef とは何ですか?

C の typedef ステートメントは、既存のデータ型の別名またはニックネームを定義します。

2. typedef 構造体とは何ですか?

typedef struct は、構造データ型のエイリアスを定義するために使用されるステートメントです。

3. typedef enum とは何ですか?

typedef enum は、列挙データ型のエイリアスを定義するために使用されます。