
C言語入門
iPhone(アイフォン)アプリの開発する上で必要になるC言語の基礎知識をプログラミング未経験者を対象に解説していきます。
なお、当コンテンツに関する学習上の質問やサポート対応はできませんので、予めご了承願います。
C言語入門
- C言語とは
C言語(Cげんご)は、1972年にAT&Tベル研究所のデニス・リッチー (Dennis M. Ritchie) が
主体となって作ったプログラミング言語である。
英語圏では単に C と呼称されており、日本でも文書や文脈によっては同様に C と呼称される。
UNIXの移植性を高めるために開発された経緯から、オペレーティングシステムカーネル向けの
低レベルな記述ができることを特徴としている。 - 書式
C言語のプログラムは次のような構成になっています。
● #include <?????> ● 関数の宣言 ● 変数の宣言 ● 関数群(実際のプログラム)
最初の「#include」は、標準で用意されている関数(以下標準関数と略す)を使用する場合の 宣言です。
次の「関数の宣言」とは、自分が作った関数の書式を最初に宣言しなければなりません。
これはコンパイラがソースファイル(「*.c」という自分が作ったファイル)の一番最初から
コンパイルしていくので、この宣言がないと、コンパイラがどのようにコンパイルするのか
わからず、エラーになってしまいます。
「変数の宣言」は関数同様、変数を宣言するものです。
C言語では、あらかじめ 変数の取り扱い方
(大きさ、符号付き・符号なしの区別、整数か小数かなど)を
コンパイラに教えておきます。
関数群(実際のプログラム)はプログラムの核となる部分です。
「main」という名前の 関数から実行されます。
main関数から標準で用意されている関数(printfなど)を呼び出したり、
自分で作った関数を呼び出したりします。
- 予約語
自分で作る変数や関数などの名前は「識別子」と呼びます。
識別子の名前は基本的にはプログラマーが自由に命名できます。
ただし次のような制約があります。
●半角英数字および半角アンダーバー(_)のみ使用でき、最初の1文字は英字である
●大文字、小文字は区別される
●31文字以内であること(古いコンパイラでは最初の6文字)
●以下の予約語は使用できない
また、慣用的に使われる決まりもあります。
●基本的に小文字を使う
●標準関数と同じ名前は使わない
●標準関数、予約語の大文字、小文字だけの違いのものは使わない
- 構成
C言語を文法的に見た場合の構成について説明します。
[語句の種類]
C言語を構成する語句は
「識別子」、「予約語」、「定数」、「文字列」、「演算子」、
「区切子」、「コメント」、「ブランク」があります。
識別子はすでに説明したように、関数名、変数名のことです。
変数には、 単純変数、配列、ポインタの3種類があり、
さらにint型、char型などの型が 存在します。
予約語は、プログラムの実行順序の制御や、変数の型など、決まっている語です。
定数は文字列も定数(文字)の羅列で、定数の1種と考えられます。
演算子は足し算、引き算などの「+」や「-」のことです。
区切子とは、文と文を区切ったりするものです。
コメントとは、プログラムとは関係なく、プログラマーなどへのメッセージです。
[式]
これらの語句を組み合わせて式を構成します。
式には一次式と演算式(演算子を用いて一次式を組み合わせたもの)に分けることができます。
関数も式になります。
何かを処理するための引数を必要とし、その結果を返します。
その結果を戻り値と言います。
[文]
式1つもしくは複数の式から文を構成します。
文の後には必ず1文の終わりを示す記号 「;」がつきます。
1行の中に文が2つ以上あっても構いません。
エディターで見た場合に1行の中に複数の文があっても、
コンパイラは1文を1文として認識するからです。
[ブロック]
文が0文、1文、あるいは複数の文からブロックが構成されます。
文をブロックを表す 「{」と「}」で囲みます。ブロックは「1文と見なす単位」のことです。
条件分岐(「if」、「else」)や反復(「for」や「while」など)などは、基本的に1文しか 実行できません。
しかし1文だけしか繰り返せないのでは不便です。
そこで このブロックで1文と見なすことで、
複数の文を反復することができます。
また、ブロックは入れ子にできるので、
複数のブロックを1つのブロックとすることもできます。
- データの型と宣言
変数を使う場合には宣言をしなくてはなりません。
どんなデータの型かと、名前、初期値です。
初期値は 省略することができます。
宣言は関数の外か、ブロックの最初で行います。
関数の外で宣言した場合、グローバル変数といい、
そのファイルの中のすべての場所で使用することができます。
- 定数と変数
[整数定数]
整数定数には次のような種類があります。
● 10進数:100 255 -50
● 16進数: 0x64 0xFF
● 8進数: 0144 0377
● 文字: 'd'
このように8進数を表す場合には、最初に「0」を、16進数で表す場合には
「0x」をつけます。文字はASCII文字1バイトです。
整数定数と言うよりは、 1文字の定数として扱うことがほとんどですが、
整数として扱うこともできます。
C言語では、文字という概念はなく、その文字のASCIIコードという数字で扱います。
[小数定数]
小数の場合は普通の書き方ともう一つの方法があります。
普通の書き方は、 「1.234」、「-0.364」のような書き方です。
「1e6」や「1E-6」のように、10の何乗かで表現できます。
[代入]
宣言した変数に対して、定数を代入することができます。
[初期化]
変数を宣言しただけだと、どんな値が入っているかわかりません。
変数の宣言と 同時にある値で初期化することもできます。
- 簡単な演算
演算は式と式を演算子でつなぎます。C言語の演算子は非常に多くの種類があります。
[代入演算子]
コピー演算子とも言います。
変数に定数を代入したり、変数に変数に代入する場合に 用います。
他の多くのコンピュータ言語と同じように「=」を用います。
「char」型の変数の値を「int」型に代入する場合のように、
大きい変数に小さい変数 を代入する場合は問題ありません。
しかしこれとは逆に「int」型の変数の値を「char」型 の変数に代入する場合、
値が丸め込まれます。データの一部が欠落すると言うことです。
大抵は16進数で見た場合の下位の値がそのまま入ります。
この場合、コンパイラによっては コンパイル時に警告が発せられます。
これをさけるためにはキャストといい、型変換を行う必要があります。
[算術演算子]
算術演算子とは、「+」「-」「*」「/」「%」です。
それぞれ、加算、減算、乗算、 除算、余りを求めるです。
整数同士のわり算の場合、結果も整数になります。
この場合、小数点以下は切り捨てになります。
また小数での計算で余りを求めることはできません。
これらの計算の順序は、数学の場合と同じです。
また、負数を含む「余り(%)」を計算する場合は、コンパイラによって異なります。
[比較演算子]
等値か「==」、非等値か「!=」、大小関係「>」「>=」「<=」「<」を調べます。
成り立つ場合は「真」すなわち1が、成り立たない場合は「偽」すなわち0となります。
[論理演算子]
真と偽を論理演算で評価します。
C言語では真とは0以外の数値、偽とは0を表します。
- C言語とは