C言語入門::付録 キーワード一覧(β2)
C言語で出てくるキーワードを簡潔に説明.詳しい使い方は本文を参照するか,Google等で調べてください.
参考のために重要度を「★」の数で表しました.3つが最大?
- ★★★ 使えないとまともなプログラムが書けない
- ★★ 使えないのは恥ずかしい
- ★ 知っていると便利
- 無し 使わなくても多くの場合問題無い
予約語
型
- char 文字(符号の有無は環境依存) ★★★
- double 倍精度実数(最近のパソコンのCPUはdoubleの演算回路があるので高速) ★★★
- float 実数 ★★
- int 標準的な整数(デフォルトで符号有り) ★★★
- void 空を意味する.型が不定のポインタの型としても使える. ★★
- enum 列挙体 ★
- struct 構造体(複数のデータをまとめる) ★★
- typedef ある型に別の名前をつける ★
- union 共用体(複数データで記憶領域を共用する) ★
最近は,_Bool,_Complex,_Imaginary(真偽値,複素数,虚数)を扱えるコンパイラもある.
修飾子
変数や関数宣言時に,型の前につけて修飾する.組み合わせて使用可能.
- auto ローカル変数を自動変数にする(つまりstaticでない.普通は省略)
- const 変数の内容を変更できなくする(定数として扱う) ★
- extern グローバル変数を他のソースファイルと共有する ★
- long int型に対する修飾(long longやlong doubleが使えるコンパイラもある) ★★★
- register 変数領域としてレジスタを使わせる(必ずそうなるとは限らない)
- restrict そのポインタ経由でアクセスすることを明示(ポインタに対する修飾.最近のCで追加された)
- short int型に対する修飾 ★★★
- signed 符号有り(整数型(int,char)に対する修飾) ★★
- static ローカル変数を静的に確保.グローバル変数,関数をそのソースに閉じ込める. ★
- unsigned 符号無し(整数型(int,char)に対する修飾) ★★
- volatile 他の部分から非同期で変更される可能性を示す(その変数に対する最適化を抑制) ★
制御構造
「~」の部分は,処理したい文やブロックが入ります.
- if (条件式) ~ ―― 条件が満たされていれば実行 ★★★
- else ~ ―― ifの後に続けて,条件が満たされていなかった場合の処理 ★★★
- switch (式) ―― 式と同じ値を持つcaseに飛ぶ ★★★
- case ラベル: ―― switch用のラベルを書く ★★★
- default: ―― どのcaseにも当てはまらなかった場合 ★★
- while (条件式) ~ ―― 条件が満たされている間繰り返し ★★★
- do ~ while(条件) ―― whileのチェックをループの後ろでやりたいときに ★
- for (初期化;条件;値を変化) ~ ―― 初期化式,継続条件,再初期化式を与えて繰り返し ★★★
- break ―― ループから抜ける ★★
- continue ―― ループの今回の処理をやり直す ★★
- goto ラベル ―― 任意のラベルに飛ぶ(とりあえずは,使わないことにしたほうがいい)
- return 戻り値 ―― 関数の処理を終えて結果を返す ★★★
演算子
C言語の演算子は同じ表記でも,使い方によって意味や優先順位が変化します(この辺が面倒くさい).下に行くほど優先順位は低くなります.
- ( ) [ ] -> . 後置++ --
- ! ~ 前置++ -- 間接演算子(*) アドレス演算子(&) sizeof
- ()キャスト
- * / % 乗算,除算,余り
- + - 加算,減算
- << >> シフト演算子
- < <= >= > 大小比較
- == != 一致,不一致
- & ビット積
- ^ ビット和
- ! 否定
- && 論理積
- || 論理和
- ?: 三項演算子
- = += -= *= … 変数に対して代入,加算,減算...
- , 順次演算子
説明?
- ( ) ―― 普通の括弧.カッコ内は,必ず先に計算される ★★★
- [ ] ―― 配列の要素(配列Aのn番目の要素は A[n] と記述.nは0から始まる) ★★★
- -> ―― アロー演算子.構造体のポインタのメンバを参照 p->a は (*p).a と等価 ★★
- . ―― 構造体のメンバ (例: who.name ) ★★
- ++,-- ―― 後置インクリメント,デクリメント.(X++の値は計算する前のX) ★★
- ++,-- ―― 前置インクリメント,デクリメント.(++Xの値は計算後のX) ★★
- sizeof ―― 変数,構造体に確保された領域のバイト数(例: sizeof(X) ) ★★
- ( ) ―― キャスト 指定した型に変える (例:double x=3.14; int n=(int)x; ) ★★
- +,-,*,/ ―― 普通の加減乗除(整数型では小数点以下切捨て) ★★★
- % ―― 余りを求める (例: xを3で割った余り= x % 3) ★★
- ?: ―― 三項演算子 「C?A:B」の値は,Cが真ならA,偽ならB
- , ―― 順次演算子 「A,B」という式の場合,Aを計算した後にBを計算し,式の値はBになる
プリプロセッサ
プリプロセッサはコンパイル前にソースファイルに対して指定された処理を行います.
- #include そこにファイルを埋め込む. ★★★
- #define マクロを定義.ちょっとした関数みたいなものも作れる. ★★★
- #undef マクロを未定義に.
- #if,else,endif,elif,ifdef,ifndef 条件を満たしたときのみコンパイル
- #pragma コンパイラやリンカに指示を出す(環境依存)
標準関数
極一部だけですが,使用頻度の高いもの(というよりは,入門書に良く出てきそうな関数).
標準ライブラリ
「stdlib.h」をインクルードすると使える.
- abs(x) 絶対値(整数)
- atoi(s) 文字列を数値に. (atoi("123") は123になる)
- rand() 乱数を生成
- srand(s) シードsを元に乱数系を初期化する
入出力
「stdio.h」をインクルードすると使える.stdioはStandard Iinput/Outputのこと.
標準入出力関数.普通は,キーボードから入力して画面に出力するが,実行時に変更可能.
- putchar 1文字出力
- puts 文字列出力
- printf 指定フォーマットに従って文字列出力
- getchar 1文字入力
- gets 文字列入力
- scanf 指定フォーマットに従って文字列入力
gets,scanfは危険な関数なのでまともな製品には使ってはいけない.(セキュリティーホールになる)
ファイル入出力関数.基本的に標準入出力関数にfをつけたもの.
- fopen ファイルを開く
- fclose ファイルを閉じる
- fgetchar ストリームから1文字入力
- fgets ストリームから文字列入力
- fscanf ストリームから指定フォーマットに従って文字列入力
- fprintf 指定フォーマットに従って文字列出力
数学
「math.h」をインクルードすると使える.
扱う数値はdouble型.角度の単位はラジアン.
- sqrt(x) (sqrt(x) = pow(x,0.5))
- pow(x,y) xのy乗 ( pow(2,8)=256 )
- log(x) 自然対数
- log10(x) 常用対数
- exp() 指数関数 eのx乗
- sin(x),cos(x),tan(x) 三角関数
- asin(x),acos(x),atan(x),atan2(x,y) 逆三角関数
- fabs(x) xの絶対値
- ceil(x) 小数点以下切り上げ
- floor(x) 小数点以下切り下げ
- fmod(x,y) x/yの余り
文字列
「string.h」をインクルードすると使える.stringは文字列のこと.文字がstring(ひも)のように連なっているから.
- strcpy(s,t) sに文字列tをコピー
- strcat(s,t) 文字列sの末尾に文字列tを追加
- strcmp(s,t) 文字列を比較.一致で0
- strlen(s) 文字列sの長さ
- sprintf(s,f,...) フォーマットされた文字列をsに書き込む
文字列はchar型の配列です.
言葉
プログラミング中に使う言葉とか.このへんが日常用語に混ざるようになると,プログラマだと思われる.
- スコープ ―― ある変数や関数が使える範囲
- リテラル ―― プログラム中に書かれた文字列や定数のこと
- トークン ―― 単語のこと.数値や演算子もトークン
- ストリーム ―― 連続したデータの流れを扱う仕組み.ファイルも標準入出力もストリーム
- 識別子 ―― 変数や関数の名前のこと
- 予約語 ―― 言語として最初から予約されている単語.なので,識別子に同じ名前は使えない
- hoge,hoe,hoo,bar ―― 良い識別子の例を思いつかないときに使う(hoo,barは海外製)
- オーバーフロー ―― 処理結果がそのプログラムで扱える最大値を越えること
- フローチャート ―― プログラムの流れを表す図.絶滅しつつある.
- マジックナンバー ―― プログラム中に現れる数値.なるべく定数として定義して管理するべき
この文書の履歴
- 2006-05-12 とりあえず書く
- 2006-05-22 少し修正
Copyright © binzume all rights reserved.