ITメモ
C言語 / Programming Language C
開発環境 / Development Environment
【Mac】Xcode【Win】Visual Stadio
基礎 / Basic
About C言語書式コメントコンパイルとリンクメイクファイル / Makefileヘッダファイル変数定数型 / Type配列 / Arrayポインタ / Pointer演算子 / Operator制御文 / Control Statement関数指定子 / 修飾子構造体と共用体 / Structure & Unionプリプロセッサ / PreprocessorthisキーワードTypedef
入出力 / Input & Output
入出力入力フォーマット指定子出力フォーマット指定子「printf」関数を使って文字を出力・表示させる方法「printf_s」関数を使って文字を出力・表示させる方法「scanf」関数を使って入力させる方法「scanf_s」関数を使って入力させる方法「getchar」関数を使って「1文字」だけ入力させる方法「gets」関数を使って「文字列」を入力させる方法
文字列 / String
文字列 / String「snprintf」関数で「配列」に文字列を書き込む方法
ネットワーク / Network
memset - メモリブロックのセット
メモリー管理
メモリー
オペレーション / Operation
ファイルを操作をする方法コマンドラインプログラム / Command-Line Programプロセス / Processソケット通信 / Socket Communication
用語集 / Glossary
サブルーチン / Subroutineスタックとキュー / Stack & Cueスレッド / Thread
C言語標準ライブラリ(ヘッダファイル)
C言語標準ライブラリ【assert.h】 - 診断機能【complex.h】 - 複素数計算【ctype.h】 - 文字操作【errno.h】 - エラー【fenv.h】 - 浮動小数点環境【float.h】 - 浮動小数点型の特性【inttypes.h】 - 整数型の書式の変換【iso646.h】 - 代替つづり(Alternate spellings)【limits.h】 - 整数型の大きさ【locale.h】 - 文化圏固有操作【math.h】 - 数学【setjmp.h】 - 非局所分岐【signal.h】 - シグナル操作【stdalign.h】 - アライメント【stdarg.h】 - 可変個数の実引数【stdatomic.h】 - アトミック操作【stdbool.h】 - 論理型および論理値【stddef.h】 - 共通の定義【stdint.h】 - 整数型【stdio.h】 - 入出力【stdlib.h】 - 一般ユーティリティ【stdnoreturn.h】 - _Noreturn【string.h】 - 文字列操作【tgmath.h】 - 型総称数学関数(Type-generic math)【threads.h】 - マルチスレッド【time.h】 - 日付及び時間【uchar.h】 - Unicodeユーティリティ【wchar.h】 - 多バイトおよびワイド文字拡張ユーティリティ【wctype.h】 - ワイド文字種分類およびワイド文字大文字小文字変換ユーティリティ
C言語ライブラリ(ヘッダファイル)
C言語ヘッダファイル【winsock.h】





【C言語】Typedef

【C言語】
Typedef




Typedefとは

C/C++の便利な機能「typedef」。
「typedef」は、既存の型に新しい名前(別名)を付けるためのキーワード。

typedef は新しい型を作り出すのではなく、既存の型に新しい名前を付け加えるだけ。

「#define」とよく似た機能だが、#define はプリプロセッサにより解釈され、typedef はコンパイラにより解釈される。
また、単に同義語を作る#defineに比べ、typedef は「型」の同義語を作るという目的が明確である。
宣言場所を注意しないと、他の関数から見えないことがある。


typedefキーワードを用いると独自の型を定義する事ができる。
例えば構造体を宣言する時、「struct [構造体の型] 変数名;」と宣言するが、この構造体を何回も使う時は面倒なので、struct [構造体名]までを自分で作成した型とする事ができる。
自分で型を作成してしまえば、変数を宣言する時に、「[自分で宣言した型] 変数名;」で使用できる。




書式

typedef [定義したい既存型] 新しい型名;

typedefは#defineと異なり、コンパイル時に型チェックが行われる。
#defineは、コンパイル前に展開される。


typedefの例1
struct _test_t
{
int a;
int b;
};

//この構造体の型を宣言する
typedef struct _test_t test_t;
typedef unsigned int uint;
int main(int argc, char** argv)
{
uint c;
test_t test;//こんな感じで変数を宣言できる

test.a = 1;
test.b = 2;
c = test.a;
return(0);
}



typedefの例2
typedef struct { /* 構造体の型枠を定義して,同時にそれを型名 person_t として定義する */
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;

上記は、
typedef struct 構造体型名 person_t;
と同じ。