C/C++プログラミング用語集

文書の目的

本文書は、C/C++言語プログラミングに必要な用語と概念を整理したリファレンスである。学習時の参照資料および実務での確認用資料として利用できる。

本書の前提

内容

本文書は以下の4分野を記載している。

  1. 基礎概念:変数、ポインタ、配列、構造体、関数、データ型など、C/C++プログラミングの土台となる概念
  2. 実用技術:ファイル操作、メモリ管理、入出力処理など、プログラム開発で必要となる技術
  3. 標準ライブラリ:stdio.h、stdlib.h、math.h、string.hに含まれる主要な関数群、および関連する定数・型
  4. 記号・キーワード:演算子、制御構文、予約語の用法と意味

構成

用語は五十音順に配列されており、必要な項目を参照できる。各用語には定義、用法、関連項目を記載している。コード例を含む項目では、記述方法を確認できる。

ワードファイル版/PDF版

この資料の章構成(目次)

【サイト内の関連ページ】

用語

 

アクセス

データの読み出しや書き込みを行うこと.「メモリをアクセスする」,「ディスクをアクセスする」などのように使用する.

 

値による呼び出し

関数の呼び出しにおいて,値が渡されることを「値による呼び出し」(コールバイバリュー)という.関数に渡された値は,関数の仮引数にセットされる.引数仮引数とは別のものであるため,関数内で仮引数の値を変更しても,その変更が引数に及ぶことはない.

関連項目:参照による呼び出し

 

アドレス

アドレスとは,メモリ内での位置を示す番地のこと.次のCプログラムは,変数の値とそのアドレスを表示する例である.アドレスの表示には変換指定子%pを使用する(%pにはvoid型へのポインタを渡す).

#include<stdio.h>

int main(void)
{
  int data = 100;
  printf( "データ=%d, アドレス=%p\n", data, (void *)&data );
  return 0;
}

関連項目:ポインタ

 

アレイ

同じ型のデータを複数個まとめて扱うためのデータ構造で,配列ともいう.

 

入れ子

次のプログラムでは,ループが入れ子(ネスト)構造になっている.

【プログラム説明】2次元配列xの全要素を0で初期化する.外側のループはiを0から9まで,内側のループはjを0から19まで繰り返す.

int main(void)
{
  int i,j;
  int x[10][20];
  for( i=0; i<10; i++ ) {
    for( j=0; j<20; j++ ) {
      x[i][j] = 0;
    }
  }
  return 0;
}
 

インクリメント

値を1増やす操作のこと.C言語では「++」演算子を使用する.

関連項目:デクリメント

 

インデント

プログラムの可読性を高めるために行頭に空白を入れることで,字下げともいう.

 

エディタ

テキストやプログラムを編集する機能を持ったソフトウェア,あるいは編集を行うための画面のこと.

 

エラー

プログラムにおけるエラーには,次の3種類がある.

 

演算子

演算子(オペレータ)は,1個あるいは複数のオペランドを受け取り,特定の演算を行うための記号である.主な演算子は次の通りである.

論理演算子
    !   否定(NOT)
    &&  論理積(AND)
    ||  論理和(OR)
比較演算子
    !=  等しくない
    <   より小さい
    <=  以下(等しいか小さい)
    ==  等しい
    >   より大きい
    >=  以上(等しいか大きい)
算術演算子
    %   剰余(余り)
    *   乗算
    +   加算
    ++  インクリメント(1増加)
    -   減算
    --  デクリメント(1減少)
    /   除算
その他
    ->  構造体へのポインタを使用したメンバアクセス
    .   構造体メンバ直接選択
    =   代入
    []  配列要素の指定
など
 

オーバーフロー

演算結果の値が,その型で表現可能な範囲を超えること.このとき,正しい演算結果が得られない.

 

オープンモード

ファイルを開く際の方式を指定するもので,読み込み専用,書き込み専用,追加書き込みなどがある.C言語のfopen関数で指定する.

関連項目:ファイル

 

オペランド

演算子によって処理される対象となるデータや式.

 

改行

現在の表示位置を次の行の先頭に移動する制御動作のこと.C言語では,文字列内に「\n」を記述することで改行を表現する.

関連項目:改行文字

 

改行文字

改行を実行するための特殊文字.C言語では文字列内で「\n」と記述する.

 

データや関数の性質と取りうる値の範囲を規定するもの.C言語における代表的な型は次の通りである.

 

空文字

文字列の終端を示す特殊文字で,ヌル文字ともいう.C言語では「'\0'」と表記する.文字列の末尾には,この文字が付加される.

 

仮引数

関数定義内で宣言される変数のこと.例えば,C言語の関数宣言「int foo(int x);」において,xが仮引数である.関数が呼び出されると,引数の値が対応する仮引数にコピーされる.

引数(argument)は関数呼び出し時に実際に渡される値であり,仮引数(parameter)は関数定義時に宣言される変数である.

 

関数

プログラムにおける関数は,特定の処理をまとめた再利用可能なコードブロックである.引数を受け取り,処理を実行し,結果を返す.

[関数呼び出しでの制御の流れ]

通常,プログラムは上から順に実行されるが,関数呼び出しが発生すると,その関数の処理が完了した後に呼び出し元の位置に戻る.C言語での関数呼び出しは,関数名の後にカッコ「()」を付け,その中に引数を記述する.

[関数宣言]

関数を使用する前に,その存在をコンパイラに知らせる宣言が必要である.C言語での関数宣言では,戻り値の型,関数名,そして仮引数の型と名前をカッコ「()」内に記述する.

[関数定義]

関数定義は,関数の具体的な処理内容を記述したもの.次のC言語の関数例は,整数値を受け取り,その値に1を加えて返す.

int foo( int n )
{
    return n + 1;
}

C言語の関数定義は「戻り値の型,関数名,(仮引数リスト) { ブロック }」という形式で記述する.return文で関数の戻り値を指定する.

関数には値を返すものと返さないものがある.C言語で値を返さない関数を定義する場合は,戻り値の型としてvoidを指定する.この場合のreturn文は「return;」と記述し,関数の実行を終了して呼び出し元に制御を戻す.

void foo2( int n )
{
    printf( "data = %d\n", n );
    return;
}

関連事項:値による呼び出し参照による呼び出し

 

間接参照

ポインタを使用してメモリ上のデータにアクセスすること.ポインタが指すアドレスに格納されている値を読み書きする操作である.

 

C言語では,式の評価結果が0の場合を偽(false)とする.条件分岐や繰り返し制御で使用される.

関連項目:

 

擬似乱数

C言語のrand関数によって生成される数値列.完全な乱数ではなく,一定のアルゴリズムで生成される数列である.srand関数で初期値(シード値)を設定しない場合,プログラムを実行するたびに同じ数列が生成される.

 

クラス

C++において,データ(メンバ変数)とそれを操作する関数(メンバ関数)を1つにまとめたデータ型.オブジェクト指向プログラミングにおける基本的な構成要素である.クラスから生成された実体をオブジェクト(インスタンス)という.

 

繰り返し

ある条件が満たされる間,同じ処理を繰り返し実行すること.ループ(loop)ともいう.C言語では,繰り返しを実現するための制御文として while 文,for 文 などがある.

 

case ラベル

C プログラムでの case ラベルは,後ろにコロン「:」が付いた定数式であり,switch 文の中でのみ使用できる.複数の条件分岐を実現するために用いられる.

関連項目:選択文

 

コーディング

ソースプログラムを作成すること.プログラミングが,プログラムの設計から作成までの全工程を指すのに対し,コーディングは,決定された設計に基づいて,実際のプログラムを記述する作業を指す.

 

構造体

複数の異なるデータ型のメンバをまとめて1つの新しいデータ型として扱う仕組み.各メンバには名前が付けられ,個別にアクセスできる.

関連項目:struct

 

コマンドラインシェル

コマンドラインシェルには bash(Bourne-Again shell),Windows のコマンドプロンプト(cmd.exe)などがある.プログラムの起動と終了,プログラムの出力のファイルへのリダイレクト,コマンド履歴(ヒストリ)の管理,ワイルドカードを用いたパターンマッチ,ファイル名の補完などの機能を提供する.

 

コメント

プログラムの中に記述する注釈のこと.プログラムの動作説明,使用上の注意点,変数の役割などを記録する.コメントは,プログラム実行時には無視される.C言語では,複数行コメントの始まりを「/*」,終わりを「*/」で示す.また,「//」を使用して1行分のコメントを記述することもできる.コメントは入れ子構造にすることができない.最初の「/*」は,最初に現れた「*/」で閉じられるため,次のような記述は意図通りに動作しない(外側のコメントは最初の「*/」で終了し,その後の「*/」は構文エラーとなる).

/* n = n + 1; /* n は「空き領域」の先頭を指す */ */
 

コンパイル

プログラムをコンパイルするとは,コンパイラを使用して,人間が記述したプログラムのファイルを,コンピュータが実行可能な形式(実行形式ファイル)や,中間形式のファイルに変換すること.複数のファイルから実行形式ファイルを生成する場合は,コンパイル後にリンク(各ファイルを結合する処理)が行われる.

 

再帰的呼び出し

関数が自分自身を呼び出すような関数呼び出しのこと.再帰的呼び出しの代表的な例として,ハノイの塔の問題がある.ハノイの塔とは,3本の柱(X,Y,Z)があり,最初,複数枚の円盤が柱Xに大きいものが下になるように積まれている状態から,「大きな円盤を小さな円盤の上に置かない」というルールを守りながら,円盤を1枚ずつ移動させて,すべての円盤を柱Xから別の柱に移動させる問題である.

次に,ハノイの塔を解くC プログラムを示す.

【プログラム説明】関数hanoiは,n枚の円盤を柱xから柱zへ,柱yを作業用として移動させる手順を表示する.mainでは4枚の円盤を柱'X'から柱'Z'に移動させる手順を表示する(柱の名前は1文字なので,文字型char型で表す).

#include<stdio.h>

void hanoi( int n, char x, char y, char z )
{
    if ( n < 1 ) {
        return;
    }
    hanoi( n-1, x, z, y );  /* n-1 枚の円盤を x から y へ */
    printf( "円盤(直径:%d)を,%c から %c へ\n", n, x, z );
    hanoi( n-1, y, x, z );  /* n-1 枚の円盤を y から z へ */
}

int main(void)
{
    hanoi( 4, 'X', 'Y', 'Z' );
    return 0;
}
 

三角関数

プログラミングで使用できる代表的な三角関数は次の通りである.

 

算術

数値を対象とした基本的な計算のこと.加減乗除などの基本演算を含む.

 

参照による呼び出し

C言語には参照渡しの仕組みはなく,関数の引数としてポインタ(メモリアドレス)を値として渡すことで,同等の効果を得る.関数の引数としてポインタを渡すと,関数内部でそのポインタが指すメモリ上のデータを直接読み書きできる.これにより,関数の処理結果を呼び出し側に反映できる.渡されたポインタは関数の仮引数にセットされ,そのポインタを通じてデータの読み書きが行われる.(C++には参照型を用いた参照渡しの仕組みがある.)

関連項目:値による呼び出し

 

プログラミングにおける式とは,演算子オペランドの組み合わせのこと.以下に,C プログラムにおける式の例を示す.

30                           /* 定数 */
x                            /* 変数 */
x[100]                       /* 配列要素 */
a+b                          /* 加算 */
a*b                          /* 乗算 */
a++                          /* インクリメント */
a<100                        /* 比較 */
c=a+b                        /* 代入 */
sqrt( (x*x) + (y*y) )        /* 関数呼び出し */

関連項目:式文

 

式文

式のみで構成される文.式の後ろにセミコロンを付けることで,式を文として使用できる.

 

識別子

C言語において識別子とは,関数,case ラベル構造体変数等に付ける名前のこと.識別子には,半角のアルファベット(小文字,大文字),半角のアンダーバー(_),半角の数字を使用できる.ただし,識別子の先頭文字はアルファベットかアンダーバーでなければならない.また,C言語の予約語は識別子として使用できない.

 

自己参照構造体

構造体の定義内に,自身の型へのポインタを持つような構造体のこと.リスト構造やツリー構造などのデータ構造を実現する際に使用される.

 

字下げ

プログラムにおいて,行の先頭に一定のルールでタブや半角空白文字を挿入し,プログラムの階層構造を視覚的に表現すること.次の Cプログラムでは,if 文に続くブロックで字下げが行われており,プログラムの構造が明確に示されている.

#include<stdio.h>

int main(void)
{
    int x = 50;
    if ( x < 100 ) {
        printf( "x is small\n");
    }
    return 0;
}
 

実行形式ファイル

機械語(マシン語)のプログラムが格納され,コンピュータが直接実行可能な形式となっているファイルのこと.実行型ファイル,実行ファイル,実行可能ファイルとも呼ばれる.コンパイラによってソースコードから生成される.

 

ジャンプ文

プログラムの実行位置を別の場所へ移動するための制御文.C プログラムにおけるジャンプ文には,continue 文(ループの次の繰り返しへ移動),break 文(ループや switch文から抜け出す),return 文(関数から戻る)などがある.

 

初期化

変数などのオブジェクトに最初の値をセットすること.初期化されていない変数は不定な値を持つため,プログラムの正しい動作を保証できない.C プログラムにおける主な初期化方法は次の通りである.

 

書式文字列

C プログラムでの書式文字列は,printf 関数,fprintf 関数,sscanf 関数などで使用される,入出力の変換方式を指定する文字列である.

 

C言語では,式の評価結果が0以外の場合を真(true)とする.条件分岐や繰り返し制御で使用される.

関連項目:

 

数字

数字は,0から9までの以下の10個である.

0 1 2 3 4 5 6 7 8 9
 

制御文

プログラムの実行順序を制御するための文.C言語では,制御文がない場合,文は上から順に逐次的に実行される.制御文は以下の3種類に分類される.

  1. 繰り返し: C プログラムでは while 文,for 文など
  2. ジャンプ文: C プログラムでは continue 文,break 文,return 文など
  3. 選択文: C プログラムでは if 文,switch
 

宣言

宣言文では,識別子の名前と型を指定する.以下の C プログラムは,age という名前の整数型変数の宣言例である.

  int age;

以下は,FILE 型へのポインタ宣言例である.

FILE *fp;

以下は,整数型配列宣言例である.

int table[100];

以下は,3つの整数の最大値を返す関数の定義例である.

int max3( const int x, const int y, const int z )
{
    if ( ( x > y ) && ( x > z ) ) {
        return x;
    }
    else if ( y > z ) {
        return y;
    }
    else {
        return z;
    }
}

関連項目:初期化

 

選択文

条件式の値に基づいて,実行する文を選択するための制御文.C プログラムの選択文には,if 文,switch 文がある.

 

ソースファイル

プログラムのソースコードを保存したテキストファイルである.

 

ソースプログラム

プログラミング言語で記述されたプログラムの文字列,またはそれを保存したテキストファイルのこと.ソースコードともいい,プログラミング言語処理系によって実行可能な形式に変換される.

 

注釈

プログラム中に記述する説明文のことで,コメントともいう.

 

データ構造

データの集合をコンピュータで効率的に処理するための組織化方式.主なデータ構造として,配列,スタック,キュー,ハッシュテーブル,リスト,木,グラフなどがある.

 

テキストファイル

人間が読める形式の文字のみで構成されたファイルである.

 

テスト

プログラムが仕様通りに動作するか検査し,プログラム中の不具合(バグ)を発見するための作業.

 

デバッガ

プログラム中の不具合(バグ)を発見し修正するための支援機能を提供するソフトウェアツール.

 

デバッグ

プログラム中の不具合(バグ)を発見し修正する作業.

 

デクリメント

値を1減らす操作のこと.C言語では「--」演算子を使用する.

関連項目: インクリメント

 

動的メモリ管理

プログラムの実行時にメモリ領域を必要に応じて確保・解放する機能.C言語ではmalloc関数で確保しfree関数で解放する.C++言語ではnew演算子で確保しdelete演算子で解放する.確保したメモリは,使用後に必ず解放する(解放を忘れると,使用可能なメモリが減り続けるメモリリークが発生する).

 

NULL ポインタ

有効なメモリ位置を指していない特別なポインタ値.

 

ヌル文字

C言語の文字列において,文字列の終端を示す特殊な文字(値が0の文字).

 

バイト

コンピュータにおけるデータの基本単位.通常1バイトで基本文字(英数字,記号など)1文字を表現できる.

 

配列

同じデータ型の要素がメモリ上に連続して格納されているデータ構造.例えば,C プログラムの「int table[100];」では,整数型の要素100個が連続して配置され,各要素には0から99までの添字が割り当てられる.

int table[100];

関連項目: 配列の宣言

 

配列の宣言

配列の宣言では,配列名,要素数,および要素の型を指定する.例えば,C プログラムの「int table[100];」は,table という名前の,int型要素100個からなる配列を宣言している.

int table[100];

複数の[]を使用することで多次元配列を宣言できる.以下は2次元配列の例である.

int table2[10][20];

関連項目: 配列

 

ハノイの塔

ハノイの塔の詳細については,「再帰的呼び出し」の項を参照のこと.

 

引数

関数呼び出し時に,関数に渡される具体的な値または式のこと.

関連項目:仮引数

 

評価

プログラム中の式から具体的な値を計算すること.

 

標準出力

プログラムの標準的な出力先であり,通常はディスプレイ画面に対応する.環境設定により,出力先をファイルなどに変更できる.C プログラムでは stdout として参照される.

 

標準入力

プログラムの標準的な入力元であり,通常はキーボードに対応する.環境設定により,入力元をファイルなどに変更できる.C プログラムでは stdin として参照される.

 

ファイル

ディスクなどに保存されるデータ.オペレーティングシステムがファイルを管理する.ファイルの読み込みと書き出しを行う前と終了後には,オペレーティングシステムへの通知(オープン,クローズ)が必要である.

[ファイル位置指示子]

ファイル内で現在読み書きが行われている位置を示す.ファイルをオープンした直後は,ファイル位置指示子はファイルの先頭を指している.ファイルの読み込みや書き出しを行うと,ファイル位置指示子は移動していく.ファイル位置指示子を操作することで,ファイル内の任意の位置での読み書きが可能となる.C プログラムでは,ファイル位置指示子はFILE オブジェクト内に記憶される.また,ファイル位置指示子の操作には,fseek関数,ftell関数等を使用する.

[ファイル名]

ファイルに付けられた名前のこと.C プログラムでは,fopen関数を使用してファイルをオープンする際に,ファイル名の指定が必要である.

[ファイルのオープン]

プログラムからファイルの読み書きを行う前に必要な操作.C プログラムでは,ファイルのオープンにはfopen関数等を使用する.

[ファイルのクローズ]

ファイルの読み書きが終了した後に必要な操作.C プログラムでは,ファイルのクローズにはfclose関数等を使用する.

[ファイルの読み込み]

ファイルからプログラムへデータを読み込む操作のこと.

[ファイルの書き出し]

プログラムからファイルへデータを書き込む操作のこと.

[ファイルを扱うライブラリ関数]

ファイルを扱うライブラリ関数には次のようなものがある.

 

FILE オブジェクト

C プログラムにおいて,FILE オブジェクトはファイル等を操作するための情報を保持している.例えば,ファイル位置指示子もFILE オブジェクト内に記憶される.FILE オブジェクトへのポインタは,ファイルポインタ(file pointer)とも呼ばれる.

 

複文

ブロックの別名.

 

プログラム

コンピュータはプログラムによって動作する.プログラムには,オペレーティングシステムなどのシステムプログラムと,用途に応じて使用するアプリケーションプログラムがある.

 

プログラミング

プログラムを作成すること.

 

プログラミング言語

プログラムを記述するための言語.Python,JavaScript,C,C++,Java,bash,C#,R,MATLAB,Octave,SQL,Ruby,LISP,Prolog,Perl,Haskell,Scheme,アセンブリ,機械語(マシン語)など,多様な種類が存在する.

 

プログラミング言語のシェル

Python言語のシェルとしてIPython,Ruby言語のシェルとしてirbが代表的である.

 

プログラミング言語処理系

プログラムを解釈実行するインタプリタと,プログラムをより解釈実行しやすい別のプログラムに変換するコンパイラが存在する.

 

プログラミングスタイル

C プログラムでは,if文の後に続く「{」について,次のように記述できる.

if (x < 0) {
    printf( "negative\n" );
    return -1;
}
else {
    return sqrt(x);
}

あるいは次のような記述も可能である.

if(x < 0)
{
    printf( "negative\n" );
    return -1;
}
else
{
    return sqrt(x);
}

次のような記述では,文の字下げが不統一であり,可読性が低下する.ブロック内では,一貫した字下げ幅を維持する.

if(x < 0) {
printf( "negative\n" );
  return -1;
}
else {
 return sqrt(x);
}

また,次のように括弧の字下げが不統一だと,プログラムの構造が把握しづらくなる.括弧の対応関係が明確になるよう記述する.

if(x < 0) {
    printf( "negative\n" );
    return -1;
    }
    else {
    return sqrt(x);
}
 

プロセッサ

機械語(マシン語)のプログラムを解釈し実行する機能を持つ装置.

 

ブロック

C言語におけるブロックとは,「{}」で囲まれた1つ以上の文の集まり.ブロックは,関数の定義,if文,switch文,for文,while文などで使用される.以下のプログラムでは,main関数の本体が1つのブロックを形成している.また,ブロックは入れ子構造をとることができる.

int main(void)
{
  printf( "hello world\n" );
  return 0;
}
 

C言語における文には,次のような種類がある.

 

変数

名前の付いたオブジェクトのこと.数学における変数の概念とは異なる.

[変数宣言]

変数の名前と型などを記述し,プログラム中での変数の使用を宣言すること.C言語における変数宣言は,末尾をセミコロンで終える.以下のCプログラムでは,変数xはint型(整数データ),変数rateはdouble型(浮動小数点数データ)として宣言されている.

    int x;
    double rate;

変数宣言と同時に,変数の値を初期化することも可能である.以下のCプログラムでは,変数宣言と初期化を同時に行っている.

int i = 0;

変数宣言をブロック(「{}」で囲まれた文の集まり)内で行った場合,宣言された変数はそのブロック内でのみ有効である.

 

ポインタ

ポインタという用語は,他のもの(整数,浮動小数点数,配列構造体,ポインタ,関数など)を指し示すという機能に由来する.ポインタを使用することで,任意のデータの読み書きが可能となる.ただし,ポインタの内容が不正確な場合,データを破壊する可能性がある.ポインタの内容は,メモリアドレスである.

[ポインタの宣言]

C プログラムでは,ポインタの宣言に「*」を使用する.「int *p;」のような記述で,整数データへのポインタが宣言される.pの内容は,整数データが格納されているメモリアドレスとなる.

int *p;

C プログラムでは,ポインタ自身も1種の変数として格納される(ポインタ変数という)ため,「int **table;」のような記述でポインタへのポインタを宣言することも可能である.

[ポインタ型]

「int へのポインタ」は,C プログラムでは次のように記述する.

int *p;

この場合,p は int 型へのポインタ型である.

 

メモリ

データやプログラムを記憶するための装置.メモリは一定の長さを持つメモリブロックが連続して配置された構造を持ち,各メモリブロックには固有のアドレスが割り当てられている.

 

メンバ

構造体の各要素に付けられた名前のこと.以下の C プログラムでは,age と height がメンバである.メンバの値を操作する際は,ピリオド「.」あるいは「->」を使用する.

struct person {
  int age;
  double height;
};
 

文字型

文字データを扱うための型.以下のプログラムでは,c は文字型である.

char c;
 

文字列データ

文字列データを扱う基本的な方法は,文字の配列を使用することである.C プログラムでは,文字の配列に文字を1文字ずつ格納し,最後にヌル文字を付加する.このヌル文字は,文字列の終端を示す記号である.ただし,文字列の長さを計算する際には,末尾のヌル文字は含めない.

C プログラムにおける文字列操作の代表的なライブラリ関数を以下に示す.

 

予約語

C プログラムにおいてあらかじめ特別な意味が定められている単語.予約語を変数名や関数名として使用することはできない.

asm,auto,breakcase ,catch,charconstcontinuedefault ,delete,do,doubleelse ,enum,extern ,float,for ,goto,ifint ,long,new,operator,private,protected,public,register,return ,short,signed,sizeof,static,structswitch ,template,this,throw,try,typedef,union,unsigned,virtual,void ,volatile,while

 

ループ

一連の文の実行を繰り返すこと.

関連項目:繰り返し


 

C プログラムの記号・キーワード等

!

![オペランド]

! は論理否定を行う演算子.オペランドが0の場合は真(0以外の値)を返し,0以外の場合は偽(0)を返す.すなわち,オペランドの真偽値を反転させる.

関連項目: !=

!=

[オペランド1] != [オペランド2]

!= は不等価比較を行う演算子.オペランド1とオペランド2を比較し,両者が異なる値のときは真(1)を,等しい値のときは偽(0)を返す.

関連項目: !,<,<=,==,>,>=

"

二重引用符「"」は,文字列リテラルの開始と終了を示す区切り記号.

#include

#include は,Cコンパイラのプリプロセッサに対して,プログラムのコンパイル時に指定されたファイルの内容をその位置に取り込むように指示するプリプロセッサ命令.

%

[オペランド1] % [オペランド2]

% は,整数の除算における剰余を求める演算子.オペランド1をオペランド2で割った際の余りを返す.浮動小数点数の剰余を求める場合は,fmod関数を使用する.

関連項目: /

&

&[オペランド]

& は,オペランドが格納されているメモリ上の位置(アドレス)を返すアドレス演算子.

&&

[オペランド1] && [オペランド2]

&& は論理積(AND)を求める演算子.オペランド1とオペランド2の両方が真(0以外の値)の場合に真を返し,それ以外の場合は偽(0)を返す.

関連項目: ||

( )

[関数名]( ),あるいは ([式])

( ) は,関数呼び出しや式の優先順位を示す区切り記号.関数名の後に ( ) を付けると引数のリストを指定できる.また,式を ( ) で囲むと,その式を優先的に評価する.

*

[オペランド1] * [オペランド2]
* [ポインタ]
[タイプ名] *[変数名(の並び)];

「*」は,以下の3つの用途で使用される演算子または記号である.

例: FILE *fp;

*/

「*/」はコメントの終了を示す区切り記号.

関連項目: /*,//

+

[オペランド1] + [オペランド2]

「+」は加算を行う演算子であり,オペランド1とオペランド2の和を計算して返す.

関連項目: ++,-

++

[オペランド]++
++[オペランド]

「++」はインクリメントを行う演算子.オペランドの値に1を加えて,その結果をオペランドに格納する.「[オペランド] = [オペランド] + 1;」と同等の処理を行う.

関連項目: --

-

[オペランド1] - [オペランド2]

「-」は減算を行う演算子であり,オペランド1からオペランド2を減じた結果を返す.

関連項目: +,--

--

[オペランド]--
--[オペランド]

「--」はデクリメントを行う演算子.オペランドの値から1を減じて,その結果をオペランドに格納する.「[オペランド] = [オペランド] - 1;」と同等の処理を行う.

関連項目: ++

->

[ポインタ]->[メンバ名]

「->」は,構造体ポインタを通じてメンバを参照するための演算子.構造体へのポインタからそのメンバにアクセスする際に使用する.

例:

struct Person {
  int age;
  char name[32];
};
struct Person p;
struct Person *ptr = &p;
ptr->age = 32;

.

[名前].[メンバ名]

「.」は,構造体変数のメンバを直接参照するための演算子.構造体変数からそのメンバにアクセスする際に使用する.

例:

struct Person {
  int age;
  char name[32];
};
struct Person p;
p.age = 32;

関連項目: ->

/

[オペランド1] / [オペランド2]

「/」は除算を行う演算子.オペランド1をオペランド2で割った商を返す.

関連項目: %

/*

「/*」はコメントの開始を示す区切り記号.「*/」までの範囲がコメントとして扱われる.

関連項目: */,//

//

「//」は行コメントを示すコメント区切り記号.「//」から行末までがコメントとして扱われる.

関連項目: /*,*/

;

「;」は文の終端を示す区切り記号.プログラム内で文と文の区切りを明示する.

<

[オペランド1] < [オペランド2]

「<」は大小比較を行う演算子.オペランド1がオペランド2より小さい場合に真を返し,それ以外の場合は偽を返す.

関連項目: !=,<=,==,>,>=

<=

[オペランド1] <= [オペランド2]

「<=」は大小比較を行う演算子.オペランド1がオペランド2以下の場合に真を返し,それ以外の場合は偽を返す.

関連項目: !=,<,==,>,>=

=

[オペランド1] = [オペランド2]

「=」は代入を行う演算子.オペランド2の値をオペランド1に代入する.

==

[オペランド1] == [オペランド2]

「==」は等価比較を行う演算子.オペランド1とオペランド2が等しい場合に真を返し,それ以外の場合は偽を返す.

関連項目: !=,<,<=,>,>=

>

[オペランド1] > [オペランド2]

「>」は大小比較を行う演算子.オペランド1がオペランド2より大きい場合に真を返し,それ以外の場合は偽を返す.

関連項目: !=,<,<=,==,>=

>=

[オペランド1] >= [オペランド2]

「>=」は大小比較を行う演算子.オペランド1がオペランド2以上の場合に真を返し,それ以外の場合は偽を返す.

関連項目: !=,<,<=,==,>

||

[オペランド1] || [オペランド2]

「||」は論理和(OR)を求める演算子.各オペランドは0を偽,0以外を真として扱い,いずれかのオペランドが真(0以外)の場合に真を返す.

関連項目: &&

math.h

#include<math.h>

math.h は,数学関係の定義と宣言が収められたヘッダファイル.指数関数,対数関数,双曲線関数,剰余関数,三角関数などが含まれている.

stdio.h

#include<stdio.h>

stdio.h は,入出力に関する定義と宣言が収められたヘッダファイル.エラー処理,ファイルのオープン/クローズ/各種の操作,ファイルの位置指定,文字入出力,書式文字列付き入出力などが含まれている.

stdlib.h

#include<stdlib.h>

stdlib.h は,一般操作に関する定義と宣言が収められたヘッダファイル.メモリブロックの確保と解放,擬似乱数の生成,プログラムの終了処理,文字列から数値への変換,マルチバイト文字関係の処理などが含まれている.

string.h

#include<string.h>

string.h は,文字列操作に関する定義と宣言が収められたヘッダファイル.文字列の連結,文字列の比較,文字列のコピー,文字列の検索などが含まれている.

英字

 

abs()

#include<stdlib.h>
int abs(int n);

abs関数は,整数の絶対値を求めるライブラリ関数.

 

acos()

#include<math.h>
double acos(double arg);

acos関数は,逆コサインを計算するライブラリ関数.引数は[-1, 1]の範囲をとり,返される値の単位はラジアンで,その範囲は[0, π]である.

関連項目: asinatancossintan

 

asin()

#include<math.h>
double asin(double arg);

asin関数は,逆サインを計算するライブラリ関数.引数は[-1, 1]の範囲をとり,返される値の単位はラジアンで,その範囲は[-π/2, π/2]である.

関連項目: acosatancossintan

 

atan()

#include<math.h>
double atan(double arg);

atan関数は,逆タンジェントを計算するライブラリ関数.返される値の単位はラジアンで,その範囲は[-π/2, π/2]である.

関連項目: acosasincossintan

 

break

breakは,ループを中断するための文.break文を含む最も内側のswitch文あるいはループ文(while文,for文など)から抜け出す.

関連項目: continuereturn

 

case

case [定数式]:

caseは,switch文とともに使用する制御文.switch文で評価された式の値は,各caseラベルの値と比較され,一致したcaseラベルに制御が移り,break文まで実行される.

関連項目: caseラベルbreakdefaultswitch

 

char

charは,文字データを扱うためのデータ型.1バイト(多くの環境で8ビット)の大きさを持ち,1バイトで表現できる文字(英数字,記号など)を格納できる.整数型としても扱える.

 

const

constは,値の変更が行われないことを示す予約語.constは,intdoubleなどの型名と併用する.関数がデータを変数で受け取り,関数内でその変数の値を変更しない場合に,引数宣言にconstを付加する.

 

continue

continueは,次のループ実行へ移るための文.continue文を含む最も内側のループ文(while文,for文など)について,ループ本体の残りを省略して次の繰り返しを開始する.

関連項目: breakreturn

 

cos()

#include<math.h>
double cos(double arg);

cos関数は,コサインを計算するライブラリ関数.引数の単位はラジアンである.

関連項目: acosasinatansintan

 

default

defaultは,switch文とともに使用する.switch文で評価された式の値が,どのcaseラベルの値とも一致しない場合,default部分に制御が移り,break文まで実行される.

関連項目: breakswitch

 

double

doubleは,浮動小数点数データを扱うためのデータ型.多くの環境ではIEEE 754倍精度(有効桁数は約15〜16桁,絶対値の範囲はおよそ10の-308乗から10の+308乗)である.扱える精度や範囲は処理系に依存する.

 

else

else [文]

elseは,if文と組み合わせて使用する制御文.次の例では,xが負の場合にメッセージ「x is negative」を表示し,xが0以上の場合にxの平方根を計算する.

if ( x < 0 ) {
    printf( "x is negative\n" );
}
else {
    y = sqrt( x );
}

if文の条件式が0以外(真)のときはif以下の文が実行され,0(偽)のときはelse以下の文が実行される.

関連項目: ifswitch

 

EOF

#include<stdio.h>

EOFは,ファイルの終端を示す定数.ファイル入力において,これ以上の入力がないことを示す場合や,入出力操作でエラーが発生したことを示す場合に使用する.

関連項目: stdio.h

 

exit()

#include<stdlib.h>
void exit(int status);

exit関数は,プログラムを終了させるためのライブラリ関数.exit関数を実行すると,プログラムは直ちに終了する.

 

exp()

#include<math.h>
double exp(double z);

exp関数は,指数関数の計算を行うライブラリ関数.自然対数の底eを底とする指数zの累乗(eのz乗)を計算する.対数関数 log の逆関数である.

関連項目: log

 

extern

extern [タイプ名] *[識別子];

externは,指定された識別子の定義が外部で行われていることを示すキーワード.

 

fclose()

#include<stdio.h>
int fclose(FILE *fp);

fclose関数は,ファイル等のクローズ(終了処理)を行うためのライブラリ関数.

関連項目: fopen

 

fgetc()

#include<stdio.h>
int fgetc(FILE *fp);

fgetc関数は,ファイル等から1文字読み込むためのライブラリ関数.実行すると,入力された文字が返される.読み込み時点でファイルの終わりに達していた場合,または読み込み時にエラーが発生した場合には,EOFが返される.

関連項目: fgetsfputcfputs

 

fgets()

#include<stdio.h>
char *fgets(char *string, int n, FILE *fp);

fgets関数は,ファイル等から文字列を読み込むためのライブラリ関数.ファイル等から最大でn-1文字を読み込んで,引数stringに格納する.改行文字を読み込んだ場合は,その改行文字もstringに格納し,そこで読み込みを終了する.読み込んだ文字の末尾には,文字列の終端を示すヌル文字('\0')を付加する.1行が長く読み込む文字がn-1文字に達した場合,または改行文字に達する前にファイルの終わりに達した場合にも,読み込みを終了し,末尾にヌル文字を付加する.1文字も読み込まないうちにファイルの終わりに達した場合や,ファイルからの読み込み時にエラーが発生した場合は,NULLが返される.

関連項目: fgetcfputcfputs

 

FILE

#include<stdio.h>

FILE オブジェクトは,ファイル等を扱うために必要な構造体.現在の読み書き位置やファイルの状態を示す情報を含む.fopen関数でファイルをオープンすると,FILE オブジェクトへのポインタが得られる.このポインタは,その後のファイル読み書きやファイルのクローズの際に使用する.

 

fmod()

#include<math.h>
double fmod(double x, double y);

fmod関数は,浮動小数点数の剰余を計算するライブラリ関数.引数xを引数yで割ったときの剰余を返す.

関連項目: %

 

fopen()

#include<stdio.h>
FILE *fopen(const char *file, const char *mode);

fopen関数は,ファイルをオープンするためのライブラリ関数.引数fileには,オープンするファイル名を指定する.引数modeには,"r","w"などのオープンモードを指定する.オープンに成功するとFILEオブジェクトへのポインタを返し,失敗するとNULLを返す.

関連項目: fclose

 

for

for( 初期式; 条件式; 再設定式 ) 文

forは,処理の繰り返しを制御する制御文.for文では,例えば for(i = 0; i < 100; i++) のように,3つの式を記述する.初期式は,繰り返しの開始時に1回だけ実行される.条件式は,繰り返しのたびに真偽が判定され,偽の場合は繰り返しが終了する.再設定式は,繰り返しのたびに実行される.for文での繰り返しから抜け出すにはbreak文を使用する.繰り返し途中で残りの処理を飛ばすにはcontinue文を使用する.

「for( 初期式; 条件式; 再設定式 ) 文」は,次のwhile文と等価である.

初期式;
while ( 条件式 ) {
    文
    再設定式;
}

関連項目: breakcontinuewhile

 

fprintf

#include<stdio.h>
int fprintf( FILE *fp, const char *format, …);

fprintf関数は,指定された書式文字列(第2引数のformat)に従って,ファイル等への出力を行うライブラリ関数.メッセージおよび整数,浮動小数点数,文字,文字列などのデータの出力ができる.書式文字列には,データ出力のために%付きの指定子を記述する(詳細はprintfの項を参照).「%」文字自体を出力する場合は,書式文字列中で「%%」と記述する.

関連項目: printfsscanf

 

fputc()

#include<stdio.h>
int fputc(int c, FILE *fp);

fputc関数は,ファイル等に1文字を書き込むライブラリ関数.ファイルへの書き出し時にエラーが発生した場合は,EOFが返される.

関連項目: fgetcfgetsfputs

 

fputs()

#include<stdio.h>
int fputs(const char *string, FILE *fp);

fputs関数は,ファイル等に文字列を書き込むライブラリ関数.文字列末尾のヌル文字は出力されない.また,改行文字は付加しない.ファイルへの書き出し時にエラーが発生した場合は,EOFが返される.

1行分の文字列を扱う関数の改行文字の扱いは次の通りである.

関連項目: fgetcfgetsfputc

 

free()

#include<stdlib.h>
void free(void *ptr);

free関数は,malloc関数等で動的に確保したメモリブロックを解放するためのライブラリ関数.

関連項目: malloc

 

fseek()

#include<stdio.h>
int fseek(FILE *fp, long int offset, int where);

fseek関数は,ファイルの読み書き位置を変更するためのライブラリ関数.第2引数のoffsetには,基準位置からの移動量を指定する.前方に進める場合は正の数を,後方に戻す場合は負の数を指定する.第3引数のwhereには,移動の基準位置を次の3種類から指定する.

関連項目: ftell

 

ftell()

#include<stdio.h>
long int ftell(FILE *fp);

ftell関数は,現在のファイル読み書き位置を取得するためのライブラリ関数.実行すると,通常,ファイル先頭からのバイト数(位置)が返される.

関連項目: fseek

 

if

if ( 条件式 ) 文

if は,条件分岐のために使用する制御構文.次の例では,変数 x が負の値のときにのみ,メッセージ「x is negative」が表示される.

if ( x < 0 ) {
    printf( "x is negative\n" );
}

if 文で指定された条件式が0以外(真)のときは,if 以下の文が実行される.条件式が0(偽)のときは,if 以下の文は実行されない.

if 文の後に else を記述し,else の後にさらに文を記述できる.この場合,条件式が0以外のときは if 以下の文のみが実行され,条件式が0のときは else 以下の文のみが実行される.

関連項目: switch

 

int

int は,整数データを扱うためのデータ型.扱える範囲は処理系に依存する.多くの現代環境では32ビットで,約-21億から約+21億までの整数を扱える(古い16ビット環境では-32768から+32767).

 

log()

#include<math.h>
double log(double z);

log 関数は,底を e とする自然対数の計算を行うライブラリ関数.対数関数は exp 関数の逆関数である.

関連項目: exp

 

main

main 関数は,プログラム実行の開始時に自動的に呼び出される関数.プログラムには,必ず1つの main 関数が含まれていなければならない.下記の例では,main 関数の仮引数は「int argc, char *argv[]」(整数データ argc と,文字列の配列 argv)である.main 関数の戻り値は,「int main(...」とあるように int 型である.main 関数の最後の「return 0;」で,戻り値として0を返している.

#include<stdio.h>

int main( int argc, char *argv[] )
{
    printf("Hello, world\n");

    return 0;
}
 

malloc()

#include<stdlib.h>
void *malloc(size_t size);

malloc 関数は,メモリブロックの確保を行うためのライブラリ関数.引数の size(単位はバイト)で指定された大きさのメモリブロックが割り当てられる.確保に失敗した場合はNULLを返す.確保したメモリは,使用後にfree関数で解放する.

関連項目: free

 

NULL

NULL は,ヌルポインタを表す定数(ヌルポインタとは,どこも指し示していないポインタのこと).fgets 関数,fopen 関数,malloc 関数などでは,操作に失敗したときに NULL が返される.

 

printf

#include<stdio.h>
int printf( const char *format, …);

printf 関数は,指定された書式文字列(第1引数の format)に基づき,標準出力への出力を行う.printf 関数を使用して,メッセージおよび整数,浮動小数点数,文字,文字列などのデータの出力ができる.書式文字列には,データの出力を行うために%付きの指定子を記述する.「%」文字自体を出力する場合は,書式文字列中で「%%」と記述する.

%c    文字の表示
%d     int  型のデータを,10進数で表示
%f     double  型のデータの表示
%p    ポインタの表示
%s    文字列の表示
%x     int  型のデータを,16進数で表示

%10d,%10f,%10s のように数字を記述することで,表示のための幅を指定できる.表示幅を指定した場合,データが指定した幅より大きいときは指定幅を超えて表示される(データはすべて表示される).

%10.4f のように,% と f の間に小数点付きの数を記述することで,表示の幅(この場合は10)と,小数点以下の表示桁数(この場合は4)を指定できる.

関連項目: fprintfsscanf

 

rand()

#include<stdlib.h>
int rand(void);

rand 関数は擬似乱数(pseudo-random number)を生成するためのライブラリ関数.生成される数値は,0 から RAND_MAX の間の値をとる.rand 関数は,シードの設定を行わない場合,同じ系列の擬似乱数を返す.

関連項目: RAND_MAXsrand

 

RAND_MAX

#include<stdlib.h>

RAND_MAX は,rand 関数で生成される擬似乱数(pseudo-random number)の最大値を表す定数である.この値は処理系に依存するが,少なくとも32767以上であることが保証されている.

関連項目: randsrand

 

return

return;
または
return [式];

return は,呼び出し側の関数に戻るために使用する制御文.return を実行すると,return を含む関数の実行を直ちに終了し,呼び出し側の関数に戻る.return の後に式を記述すると(そのためには関数の宣言が int foo(…) や double foo2(…) のように,型を指定して行われている必要がある),式の値が呼び出し側の関数に渡される.

関連項目: breakcontinue

 

SEEK_CUR

SEEK_CUR は,ファイル位置指示子の移動を,現在の読み書き位置を基準にして行うことを示す定数.fseek などで使用する.

関連項目: ファイルfseekSEEK_ENDSEEK_SET ,stdio.h

 

SEEK_END

SEEK_END は,ファイル位置指示子の移動を,ファイルの終端を基準にして行うことを示す定数.fseek などで使用する.

関連項目: ファイルfseekSEEK_CURSEEK_SET ,stdio.h

 

SEEK_SET

SEEK_SET は,ファイル位置指示子の移動を,ファイルの先頭を基準にして行うことを示す定数.fseek などで使用する.

関連項目: ファイルfseekSEEK_CURSEEK_END ,stdio.h

 

sin()

#include<math.h>
double sin(double arg);

sin 関数は,サイン(正弦)を計算するライブラリ関数.引数の単位はラジアンである.

関連項目: acosasinatancostan

 

size_t

size_t は,各種のデータのサイズを表すための型である.

 

sqrt()

#include<math.h>
double sqrt(double x);

sqrt 関数は,平方根を計算するライブラリ関数である.

 

srand()

#include<stdlib.h>
void srand(unsigned int seed);

srand 関数は,rand 関数で生成する擬似乱数(pseudo-random number)の系列を設定するためのライブラリ関数.擬似乱数の系列は,srand 関数の引数 seed によって変化する.

関連項目: randRAND_MAX

 

sscanf

#include<stdio.h>
int sscanf( const char *string, const char *format, …);

sscanf 関数は,引数 string で指定された文字列から,引数 format で指定された書式文字列に従ってデータを読み込む関数.整数,浮動小数点数,文字,文字列などのデータの読み込みができる.書式文字列には,データの読み込みを行うために%付きの指定子を記述する.format の後には,読み取ったデータを格納する変数の並びを記述し,必要に応じて変数の前に & を付ける.

%c    文字の読み込み
%d     int  型のデータ(10進数)の読み込み
%lf    double  型のデータの読み込み(参考:「%f」は float 型のデータの読み込み)
%s    文字列の読み込み
%x     int  型のデータ(16進数)の読み込み

関連項目: printffprintf

 

stdin

stdin は,プログラムが入力を行う標準入力のことで,Microsoft Windows ではキーボードを指す.

関連項目: stdio.h

 

strcat()

#include<string.h>
char *strcat(char *string1, const char *string2);

strcat 関数は,文字列の連結を行うライブラリ関数.string2(末尾のヌル文字までを含めたすべての文字)が,string1 の末尾に連結されてコピーされる.コピーの前にあった string1 の末尾のヌル文字は,string2 により上書きされる.次の例では,str に "HelloWorld" が格納される(str は連結後の文字列を格納できる十分な大きさが必要).

char str[32] = "Hello";
strcat( str, "World" );
 

strcmp()

#include<string.h>
int strcmp(const char *string1, const char *string2);

strcmp 関数は,文字列の比較を行うライブラリ関数.string1 と string2 とを辞書順で比較する.

 

strcpy()

#include<string.h>
char *strcpy(char *string1, const char *string2);

strcpy 関数は,文字列のコピーを行うライブラリ関数.string2 の文字列(末尾のヌル文字を含むすべての文字)が,string1 にコピーされる.コピー先の string1 の内容は上書きされる(string1 はコピーする文字列を格納できる十分な大きさが必要).次の例では,str に "Hello" がコピーされる.

char str[32];
strcpy( str, "Hello" );
 

strlen()

#include<string.h>
size_t strlen(const char *string);

strlen 関数は,文字列の長さを取得するライブラリ関数.string の文字数が返される.末尾のヌル文字は文字数に含まれない.

 

struct

structは,構造体を定義するためのキーワードである.構造体とは,1つ以上のメンバを含むデータ型のことであり,各メンバは異なる名前と型を持つことができる.

 

switch

switch ( [式] ) [文]

switch文は,条件分岐を実現するための制御構文である.switch文で指定された式の値が,各caseラベルの値と順次比較される.一致したcaseラベルに制御が移り,対応する処理がbreak文まで実行される.次の例は,入力された月(1〜12)に対応する日数を表示する.

#include<stdio.h>

int main(void)
{
    int month;
    char buf[256];

    fgets( buf, sizeof(buf), stdin );
    sscanf( buf, "%d", &month );

    switch ( month ) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            printf( "31\n" );
            break;
        case 2:
            printf( "28 or 29\n" );
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            printf( "30\n" );
            break;
        default:
            printf( "month is invalid\n" );
            break;
    }

    return 0;
}

関連項目: breakcasedefaultif

 

tan()

#include<math.h>
double tan(double arg);

tan 関数は,タンジェント(正接)を計算するライブラリ関数である.引数の単位はラジアンである.

関連項目: acosasinatancossin

 

void

voidは,関数の戻り値の型,引数の型,またはポインタの型を指定するために使用されるキーワードである.

関連項目: NULL

 

while

while( 条件式 ) 文

whileは,処理を繰り返し実行するための制御文.while文では,条件式の評価が真である限り,続く文が繰り返し実行される.繰り返しを途中で終了するにはbreak文を,現在の繰り返しをスキップして次の繰り返しに進むにはcontinue文を使用する.

関連項目: breakcontinuefor


 

目次

あ -- ん

a -- z