C言語(しーげんご)
プログラミング言語の一。本来の名称は、"C"と一文字であるが、紛らわしいので、「C言語」と呼ばれている。
初期UNIX?の移植性を高める為に開発されたため、"UNIXの副産物"と云われる事も有る。
初期UNIX?の移植性を高める為に開発されたため、"UNIXの副産物"と云われる事も有る。
特徴
C言語は開発に際し、自由度・実行速度・コンパイル速度を追求。その為、安全性を犧牲にした。故に、「諸刃の刃」等と例えられる事が有る。
- 自由度
- 改行やタブ、空白をトークンとして認識せず、行番号を用いない。その代わりに、;(セミコロン:semicolon)と云う独自の区切り記号を採用している。
- 上の様な方式を"フリーフォーマット"と云う。
- プログラム実行の手順を、入れ子構造で記述が出来、見通しがよい。goto文による、無条件のジャンプをする必要が少なく、見通しが悪い、スパゲティプログラムになるのを防ぐ。
- プログラムを、関数に分離出来る。
- 特定の範囲内でしか使えない、「使ったら棄てる」と云った形式の、ローカル変数、プログラム開始から終了迄生き続ける、グローバル変数が有り、それらの使える範囲をスコープと云う。
- 高級言語ながら、低レベルな操作が可能。主な機能には、ビット演算(OR,AND,NOT,XOR)・シフト演算(<<,>>)・ポインタ演算が有る。
Hello World
あらゆるプログラミング言語に於て、一番最初に作るプログラムで、画面に"Hello World!"と云う文字列を表示するだけのプログラム。
- C言語のHello World
#include<stdio.h>
int main(void){
printf("Hello World!\n");
return 0;
}
先ほどにも示してある通り、C言語は自由度を求めた言語なので、Hello Worldにも、幾つかの種類が有る。
プログラムの起点、main関数の書き方も樣々である。
プログラムの起点、main関数の書き方も樣々である。
- あらゆるmain関数
int main(void)
int main() // voidは省略可
main(void) // 戻り値の型は省略可
void main() // 戻り値無しでもよい
int main(int argc, char *argv) //引数を受け取る場合もある
- あらゆるHello World
#include<stdio.h>
int main(void){
puts("Hello World!");
return 0;
}
表示にprintf関数でなく、puts関数を用いた物。printf関数が、文字列に続く仮引数を、変換書式どおりに変換・出力するのに対し、putsは、仮引数は一つ、charへのポインタ(文字列)のみである。また、最後に改行も付加する。
#include<stdio.h>
int main(void){
char *str = "Hello World!";
puts(str);
return 0;
}
明示的にcharへのポインタを用いた物。難関であるポインタに早くから親しませる為に此れを用いる入門書もある。
#include<stdio.h>
int main(void){
char str[] = "Hello World!";
puts(str);
return 0;
}
charへのポインタの代わりにchar型の配列を用いた物。
誕生
B言語と云うプログラミング言語を改良して作られた。Bの次がCなのは、アルファベット順に名づけた物ではなく、B言語のもとになったBCPL言語と云うプログラミング言語の名前から来ている。BCPLのBの次がCと云う訳である。
したがって、C言語の後続を目指す"D言語"は、正しくはP言語になるべきだと言われている。