C/C++言語プログラミング用語説明 - 基礎概念・実用技術・標準ライブラリ・記号・キーワード

C/C++言語の基本的な構文と概念が体系的に整理している. C/C++言語プログラミングの基礎知識として, 関数,変数,ポインタ,配列,構造体などの概念を,実践的な例を交えて説明している.さらに, ファイル操作,メモリ管理,入出力処理など,実用的なプログラミングに必要な技術も網羅している. それに加えて, エラー処理,デバッグ,コメント記述,数学関数,文字列処理,標準ライブラリなど, 実務でよく使用される機能,高品質なプログラム開発に不可欠な実践的内容を網羅している.

形式は,用語のあいうえお順で並べている. この文書は,C/C++言語プログラミングの包括的なリファレンスとして,学習と実践の両面に活用して欲しい.

ワードファイル版,PDF 版は,次のリンクでダウンロードできる.

【目次】

サイト内の関連ページ

C/C++ の教材や説明など.

インストール

用語

 

アクセス

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

 

値による呼び出し

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

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

 

アドレス

アドレスとは,メモリ内での位置を示す番地のことである.次のCプログラムは,データとそのアドレスを表示する例である.


#include<stdio.h>

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

関連項目:ポインタ

 

アレイ

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

 

入れ子

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

【プログラム説明】このプログラムは2次元配列xの全要素を0で初期化するために,2重ループを使用している.外側のループはiを0から9まで,内側のループはjを0から19まで繰り返し実行する.


main()
{
  int i,j;
  int x[10][20];
  for( i=0; i<10; i++ ) {
    for( j=0; j<20; j++ ) {
      x[i][j] = 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関数を使用して初期値(シード値)を設定しない場合,プログラムを実行するたびに同じ数列が生成される.

 

クラス

フィールド(メンバ変数)とメソッド(メンバ関数)が同一の形式で定義されているオブジェクトの集まりのこと.オブジェクト指向プログラミングにおける基本的な構成要素である.

 

繰り返し

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

 

case ラベル

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

関連項目:選択文

 

コーディング

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

 

構造体

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

関連項目:struct

 

コマンドラインシェル

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

 

コメント

コメントは,プログラムの中に記述する注釈のこと.プログラムの動作説明,使用上の注意点,変数の役割などを記録する.コメントは,プログラム実行時には無視される.C言語では,複数行コメントの始まりを「/*」,終わりを「*/」で示す.また,「//」を使用して1行分のコメントを記述することもできる.なお,コメントは入れ子構造にすることはできない.次のコメントは入れ子になっているため,正しくない記述例である.

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

コンパイル

プログラムをコンパイルするとは,コンパイラを使用して,人間が記述したプログラムのファイルを,コンピュータが直接実行可能な実行形式ファイルや,より効率的に解釈実行できる中間形式のファイルに変換すること.

 

再帰的呼び出し

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

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

【プログラム説明】このプログラムは,ハノイの塔の問題を再帰的アルゴリズムで解く関数hanoiを実装している.mainでは4枚の円盤を柱"X"から"Z"に移動させる手順を表示する.

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

main()
{
    hanoi( 4, "X", "Y", "Z" );
}
 

三角関数

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

 

算術

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

 

参照による呼び出し

関数の呼び出しにおいて,ポインタを介してデータにアクセスする方式を「参照による呼び出し」という.関数の引数としてポインタを渡すことで,関数内部でポインタが指し示すメモリ上のデータを直接読み書きすることができる.これにより,関数の処理結果を呼び出し側に反映させることが可能となる.具体的には,関数に渡されたポインタ(メモリアドレス)は関数の仮引数にセットされ,そのポインタを通じてデータの読み書きが行われる.

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

 

プログラミングにおける式とは,演算子オペランドの組み合わせのことを指し,数学的な式とは定義が異なる.以下に,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>
main()
{
    int x;
    if ( x < 100 ) {
        printf( "x is small\n");
    }
}
 

実行形式ファイル

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

 

ジャンプ文

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

 

初期化

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

 

書式文字列

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

 

値が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++言語では new演算子と delete演算子を使用する.

 

NULL ポインタ

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)とも呼ばれる.

 

複文

複文は,ブロックの別名である.

 

プログラム

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

 

プログラミング

プログラミングとは,プログラムを作成することである.

 

プログラミング言語

プログラミング言語とは,プログラムを記述するための言語である.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()
{
  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を比較し,両者が異なる値のときには真(0以外の値)を,等しい値のときには偽(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;
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)を求める演算子である.オペランド1とオペランド2の論理和を計算する.各オペランドは0を偽,0以外を真として扱い,いずれかのオペランドが真(0以外)の場合に真を返す.

関連項目: &&

math.h

#include<math.h>

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

stdio.h

#include<stdio.h>

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

stdlib.h

#include<stlib.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関数は,逆コサインを計算するライブラリ関数である.返される値の単位はラジアンである.

関連項目: asinatancossintan

 

asin ()

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

asin関数は,逆サインを計算するライブラリ関数である.返される値の単位はラジアンである.

関連項目: acosatancossintan

 

atan ()

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

atan関数は,逆タンジェントを計算するライブラリ関数である.返される値の単位はラジアンである.

関連項目: acosasincossintan

 

break

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

関連項目: continuereturn

 

case

case [式];

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

関連項目: caseラベルbreakdefaultswitch

 

char

charは,文字データを扱うためのデータ型である.文字(数値,英字,英記号)は1バイト(8ビット)で表現され,256通りの文字をコード化できる.

 

const

constは,値の変更が行われないことを示す予約語である.constは,intdoubleなどの型名と併用する.関数がデータ値を変数で受け取る際,関数内でその変数の値を変更しない場合によく使用される.Cのライブラリ関数では,関数内で変数の値を変更しない場合,関数の引数宣言に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は,浮動小数点数データを扱うためのデータ型である.精度は10桁で,10の-37乗から10の+37乗までの正負の範囲を扱える.コンピュータの機種により,より高い精度や広い範囲を扱える場合もある.

 

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の場合は偽,0以外の場合は真となる.条件式が0のとき,else以下の文が実行され,0以外のときは実行されない.

関連項目: ifswitch

 

EOF

#include<stdio.h>

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

関連項目: stdio.h

 

exit()

#include<stlib.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>
int fgets(char *string, int n, FILE *fp);

fgets関数は,ファイル等から文字列を読み込むためのライブラリ関数である.ファイル等から,引数n文字未満の文字を読み込んで,引数stringに格納する.基本的には1行分の文字を読み込み,最後に文字列の末尾を示すヌル文字('\0')を付加する.読み込み時は改行文字までを含める.ただし,1行が長く読み込む文字がn-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>
int fopen(const char *file, const char *mode);

fopen関数は,ファイルをオープンするためのライブラリ関数である.ファイル名とモードを指定してオープンを行う.引数fileには,オープンすべきファイル名を指定する.引数modeには,"r","w"などのオープンモードを指定する.

関連項目: fclose

 

for

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

forは,処理の繰り返しを制御する制御文である.for文では,例えば for(i = 0; i < 100; i++)のように,3つの式を記述する.最初の式(初期式)は,繰り返しの開始時に1回だけ実行される.2番目の式(条件式)は,繰り返しのたびに真偽が判定され,偽の場合は繰り返しが終了する.3番目の式(再設定式)は,繰り返しのたびに実行される.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が返される.

改行文字の扱いは次の通りである.

関連項目: fgetcfgetsfputs

 

free()

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

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

関連項目: malloc

 

fseek()

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

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

  1. SEEK_CUR: 現在の読み書き位置
  2. SEEK_END: ファイルの終端
  3. SEEK_SET: ファイルの先頭

関連項目: ftell

 

ftell()

#include<stdlib.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 の場合は偽,0 以外の場合は真となり,if 文の条件が真のときは,if 以下の文が実行される.if 文の条件が偽のときは,if 以下の文は実行されない.

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

関連項目: switch

 

int

int は,整数データを扱うためのデータ型である.整数データとは,-32768 から +32767 までの範囲の数値のことで,数学での整数とは異なる.コンピュータの種類によっては,-32768 から +32767 よりも広い範囲を扱える場合もある.

 

log()

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

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

関連項目: exp

 

main

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

#include<stdio.h>

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

    return 0;
}
 

malloc()

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

malloc 関数は,メモリブロックの確保を行うためのライブラリ関数である.引数の size(単位はバイト)で指定された大きさのメモリブロックが割り当てられる.

関連項目: free

 

NULL

NULL は,ヌルポインタを表す定数である(ヌルポインタとは,値として特別な値 0 を持つポインタのことで,どこも指し示していないポインタである).NULL は,「(void *)0」と同等である.fgets 関数,fopen 関数,malloc 関数などでは,操作に失敗したときに NULL が返される.

 

printf

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

printf 関数は,指定された書式文字列(第 1 引数の format)に基づき,標準出力への出力を行う(標準出力は端末に結びついており,Microsoft Windows では画面に表示されるウインドウのことである).printf 関数を使用して,メッセージおよび整数,浮動小数点数,文字,文字列などのデータの出力を行うことができる.printf 関数の引数である書式文字列には,データの出力を行うために % 付きの文字を記述する.printf 関数を使用して「%」を出力したい場合には,書式文字列中で「%%」と記述する.

%c    文字の表示
%d     int  型のデータを,10進数で表示
%f     double  型のデータの表示(参考:「%f」で float 型のデータの表示も可能)
%p    ポインタの表示
%s    文字列の表示
%x     int  型のデータを,16進数で表示

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

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

関連項目: fprintfsscanf

 

rand()

#include<stlib.h>
int rand(void)

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

関連項目: RAND_MAXsrand

 

RAND_MAX

#include<stlib.h>

RAND_MAX は,rand 関数で生成される擬似乱数(pseudo-random number)の最大値を表す定数である.

関連項目: 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
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 で指定された書式文字列に従ってデータを読み込む関数である.sscanf 関数を使用して,整数,浮動小数点数,文字,文字列などのデータの読み込みを行うことができる.sscanf 関数の引数である書式文字列には,データの読み込みを行うために % 付きの文字を記述する.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 関数は,文字列の連結を行うためのライブラリ関数である.strcat 関数を実行すると,引数の string2(string2 の末尾のヌル文字までを含めた全ての文字)が,string1 の末尾に連結されてコピーされる.コピーの前にあった string1 の末尾のヌル文字は,string2 により上書きされる.

 

strcmp()

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

strcmp 関数は,文字列の比較を行うためのライブラリ関数である.strcmp 関数を実行すると,引数 string1 と引数 string2 との比較が辞書順で行われる.

 

strcpy()

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

strcpy関数は,文字列のコピーを行うライブラリ関数である.この関数を実行すると,引数string2の文字列(末尾のヌル文字を含むすべての文字)が,string1にコピーされる.コピー先のstring1の内容は上書きされるため,コピー前の内容は失われる.

 

strlen()

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

strlen関数は,文字列の長さを取得するためのライブラリ関数である.この関数を実行すると,引数stringの文字数が返される.ただし,末尾のヌル文字は文字数に含まれない.

 

struct

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

 

switch

switch ( [式] ) [文]

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

#include<stdio.h>

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

    gets( buf );
    sscanf( buf, "%d", &month );

    if ( ( month < 1 ) || ( month > 12 ) ) {
        printf( "month is invalid\n" );
    }

    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;
    }
}

関連項目: breakcasedefaultif

 

tan()

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

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

関連項目: acosasinatansincos

 

void

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

関連項目: NULL

 

while

while( 条件 ) 文

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

関連項目: breakcontinuefor


 

目次

あ -- ん

a -- z