2024/02/09
型キャスト | 変数の前に括弧を付け,括弧の中に型名を書く ex) int value = 10; をdoubleとして扱いたい場合 (double) value … ; | |
グローバル変数 | main関数をはじめとした,すべての関数からアクセス可能な変数 プログラム起動時に一回だけ初期値の代入が行われる(=変数 の初期化) >宣言方法:関数の中ではなく,includeの下に変数を定義 | |
オート変数 (ローカル変数) | これまで使用してきた変数。変数を宣言した関数内でのみアクセス可能 関数が呼び出されるごとに初期値の代入が行われる(=変数の初期化 ) | |
スコープ規制 | グローバル変数と同じ名前のオート変数が関数内で宣言されている場合, その関数からはグローバル変数にアクセスできなくなること *スコープ:範囲 | |
static変数 | 同じ関数を繰り返し使う場合,前回の関数終了時の値を保持できる変数 プログラム起動時に一回だけ初期値の代入が行われる(=変数の初期化) >宣言方法:変数宣言のときに「static」を付け加える( static int value = 10;) *static:静的な |
関数 | 戻り値の型(内容) | エラー | 覚え方? | ||
FILE* fp; fp=fopen("xxx.txt", "r"); の時… | |||||
・ | fgetc(fp); | int型(getした文字) | EOF | [f]getc(どこから); | |
・ | getc(fp); | ||||
・ | fgets(char buff[], 最大文字数, fp); | char*型(buffの先頭アドレス) | NULL | fgets(何に, どれだけ, どこから); | |
・ | fscanf(fp, char format[], …); | int型(読み取った個数) | EOF | fscanf(どこから, 何を/何に); | |
FILE* fp; fp=fopen("xxx.txt", "w"); の時… | |||||
・ | fputc(int char, fp); | int型(putした文字) | EOF | [f]putc(何を, 何に); | |
・ | putc(int char, fp); | ||||
・ | fputs(char buff[], fp); | int型(非負の整数) | EOF | fputs(何を, 何に); | |
・ | fprintf(fp, char format[], …); | int型(出力した個数) | EOF | fprintf(何に, 何を); | |
FILE* fp; fp=fopen("xxx.txt", "rb"); の時… | |||||
・ | fread(buff[], 項目サイズn, 項目の数m, fp); | int型(読み取りに成功した個数) | < m | fread(何に, 大きさnを, m個, どこから); | *1 *2 |
FILE* fp; fp=fopen("xxx.txt", "wb"); の時… | |||||
・ | fwrite(buff[], 項目サイズn, 項目の数m, fp); | int型(書き込みに成功した個数) | < m | fread(何を, 大きさnを, m個, 何に); | *1 *2 |
その他(FILE* fp; のもと) | |||||
・ | r:読み込み,w:書き込み,a:終端に追加(add),b:バイナリモード | ←これらを組み合わせてファイルを開く | |||
・ | fopen:失敗値はNULL | ||||
・ | fclose(fp); :使い終わったら閉じよう | ||||
*1: | 項目サイズnは,sizeof(buffの型) が普通 | ||||
*2: | 項目の数mは,buffの要素数が普通 |
構造体 | 一つの変数内に複数の部屋がある変数 >定義する方法( [タグ名]は省略可) typedef struct [タグ名]{ int value; int test; } num_t; ↑元は「struct タグ名 { … };」であったが,毎回「struct タグ名」と記述する必要があり面倒臭い。 そのため,これらを「num_t」とtypedef(型を定義)すれば,今後「num_t」と簡潔に書けるようになる *以降,構造体をnum_t型の変数と定義したものを使う↓↓↓ | |
構造体の初期化 | 初期化時点で値を代入したい場合, num_t test = { 10 , 20 }; | |
構造体の値の取得 (書き込み) | num_t
test = {10, 20}; の場合… test.value は「10」,test.testは「20」になる これに,test.value = 30; などで,構造体の中の値を書き込むことも可能 | |
構造体の代入 | 配列は一つ一つの値を個々に代入する必要があったが,複数の値がまとまっている構造体の場合は丸ごと代入可能 ex) num_t test = {10, 20}; の場合… num_t value = test; が可能(value.value = 10 , value.test = 20 になる) | |
構造体の配列 | num_t 配列名[要素数]; と宣言すれば良い ex) num_t test[5]; ↑この時点で各要素にはnum_t型が入っているので,早速「test[90].value = xxx;」の記述が可能 >配列で初期化時点での値代入が行いたければ, num_t test[5] = { {24,78}, {10,10}, {-10,10}, {-10,-10}, {10,-10} }; と書く *num_t test[] = { {24,78}, {10,10}, {-10,10}, {-10,-10}, {10,-10} }; ←初期化時点での代入を行うのであれば,要素数は書いてなくても大丈夫だった | |
構造体と関数 | 引数として構造体を渡すことも可能 void function( num_t nt ){ … }; 特に,戻り値として構造体を返す場合は, num_t function2( … ){ … }; とし,最後に「return 」することを忘れない |