#C言語の基本
##gccのインストール
macの場合
http://webkaru.net/clang/mac-compiler-gcc-install/
ubuntuの場合
sudo apt-get install gcc
centosの場合
yum install gcc
#コンパイルと実行
touch touch sample.c
#include<stdio.h>
int main() {
printf("Hello, World\n");
return 0;
}
sample.cをコンパイルしてリンクしてsampleという実行ファイルを作成
gcc sample.c -o sample
./sample
//hello
#ルール
先頭の文字は英字(a~z、A~Z)または下線(_)
2文字目以降は英字、下線、数字
大文字と小文字を区別する
先頭から最低31文字までが有効である
#予約語
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsigned |
continue | for | signed | void |
default | goto | sizeof | volatile |
do | if | static | while |
#変数
型指定 | データ型 | ビット数 | 扱える数値の範囲 (最小範囲と実際に扱える範囲は異なる) |
---|---|---|---|
signed char | 文字型 | 8以上 | 最小範囲 -127 ~ +127 |
unsigned char | 文字型 | 8以上 | 最小範囲 0 ~ 255 |
short | 短整数型 | 16以上 | 最小範囲 -32767 ~ +32767 |
unsigned short | 短整数型 | 16以上 | 最小範囲 0 ~ 65535 |
int | 整数型 | 16以上 | 最小範囲 -32767 ~ +32767 |
unsigned int | 整数型 | 16以上 | 最小範囲 0 ~ 65535 |
long | 長整数型 | 32以上 | 最小範囲 -2147483647 〜 +2147483647 |
unsigned long | 長整数型 | 32以上 | 最小範囲 0 〜 4294967293 |
long long | 拡張整数型 | 64以上 | 最小範囲 -9223372036854775807 ~ +9223372036854775807 |
unsigned long long | 拡張整数型 | 64以上 | 最小範囲 0 ~ 18446744073709551613 |
float | 単精度浮動小数点型 | 32 | ±3.4E-37 ~ ±3.4E+38 |
double | 倍精度浮動小数点型 | 64 | ±1.7E-307 ~ ±1.7E+308 |
long double | 拡張精度浮動小数点型 | 64以上 | 最小範囲 ±1.7E-307 ~ ±1.7E+308 |
#配列
int no[5] = {1};
//{ 1, 0, 0, 0, 0 }
char str[10] = { 'H','E','L','L','O','\0' };
char str[10] = "HELLO";
#演算子
演算 | 演算子 | 例 | 意味 |
---|---|---|---|
加算 | + | a + b | a に b を加える |
減算 | - | a - b | a から b を引く |
乗算 | * | a * b | a に b をかける |
除算 | / | a / b | a を b で割る |
剰余算 | % | a % b | a を b で割った余り |
演算 | 演算子 | 例 | 意味 |
---|---|---|---|
インクリメント | ++ | a++ | a に 1 を加える(後置演算) |
++a | a に 1 を加える(前置演算) | ||
デクリメント | -- | a-- | a から 1 を引く(後置演算) |
--a | a から 1 を引く(前置演算) |
#型変換
#条件分岐
演算子 | 意味 | 使用例 |
---|---|---|
> | より大きい | a > 0 |
>= | 以上 | a >= 0 |
< | より小さい | a > 0 |
<= | 以下 | a <= 0 |
== | 等しい | a == 0 |
!= | 等しくない | a != 0 |
##if文
if(条件式①){
処理①
}else if(条件式②){
処理②
}else{
処理③
}
##switch文
switch(値){
case 値①:
処理①
break;
case 値②:
処理②
break;
・・・
default:
処理③
break;
}
##for文
for ( 初期化処理 ; 条件式 ; 増分処理 ){
処理
}
##while文
whlie(条件式){
処理
}
##do while文
do{
処理
}whlie(条件式);
#関数
戻り値の型 関数名(引数の型 引数1,引数の型 引数2,・・・,引数の型 引数n)
{
処理
return 戻り値; ← 省略されることもある
}
#ポインタ
通常の変数 | ポインタ変数 | 解説 | |
---|---|---|---|
宣言 | int a; | int* p: | ポインタ変数は、変数の先頭に*をつける |
値 | a | *p | ポインタ変数で値を示すには、先頭に*をつける必要がある。 |
アドレス | &a | p | 通常の変数は、値を入れるが前提だが、ポインタ変数はアドレスを入れる |
#記憶クラス
グローバル変数、ローカル変数によってデータ記憶される範囲が違う。
##自動変数
関数内部で宣言され、宣言された関数の中でのみ使用可能な変数。
メモリのスタック領域に保存されており、関数の処理の終了と共にメモリから消去。
通常autoが省略されている。
auto int n = 100;
##外部変数 (グローバル変数)
静的領域に保存。
#include <stdio.h>
int g = 10;
##静的変数
プログラム実行中に常に同じ場所に配置され値を保持。
static int s = 100;
#標準関数
ストリームおよびファイルの操作に関する型・マクロ・関数の宣言定義。
一般ユーティリティに関する型・マクロ・関数の宣言定義。
文字種別の分類、および大文字・小文字の変換を行う関数を提供する。 ヘッダが提供する文字操作関数は、設定されているロケールに応じて動作が変わる。
文字列操作に関する型・マクロ・関数の宣言定義。
数学的な演算を行うための関数、および関連するマクロの宣言定義。
グレゴリオ暦に基づく日付等を扱うための型・マクロ・関数の宣言定義。
#入出力
FILE - ストリームを制御するためのオブジェクト型(構造体とは限らない)
fpos_t - ファイルのシーク位置を格納するための型
clearerr - ファイル終端表示子およびエラー表示子のクリア
fclose - ファイルのクローズ
feof - ファイル終端表示子の判定
ferror - エラー表示子の判定
fgetc - ストリームからの1文字入力
fgetpos - ストリームのファイル位置表示子の参照
fgets - ストリームからの1行入力
fopen - ファイルのオープン
fprintf - ストリームへの書式付き出力
fputc - ストリームへの1文字出力
fputs - ストリームへの1行出力
fread - ストリームからの読み込み
fscanf - ストリームからの書式付き入力
fseek - ストリームのファイル位置表示子の変更
fsetpos - ストリームのファイル位置表示子の設定
ftell - ストリームのファイル位置表示子の参照
fwrite - ストリームへの書き込み
getc - ストリームからの1文字入力
getchar - 標準入力からの1文字入力
gets - 標準入力からの1行入力(ただし、C11で削除された)
perror - 標準エラー出力へのエラーメッセージの出力
printf - 標準出力への書式付き出力
putc - ストリームへの1文字出力
putchar - 標準出力への1文字出力
puts - 標準出力への1行出力
remove - ファイルの削除
rename - ファイル名の変更
rewind - ストリームの巻き戻し
scanf - 標準入力からの書式付き入力
setbuf - ストリームのバッファ設定
setvbuf - ストリームの詳細なバッファ設定
sprintf - 文字配列への書式付き出力
sscanf - 文字列からの書式付き入力
tmpfile - テンポラリファイルをバイナリモードでオープン
tmpnam - テンポラリファイル名の生成
vprintf - 標準出力への書式付き出力( va_list 版)
vscanf - 標準入力からの書式付き入力( va_list 版)
#一般ユーティリティ
div_t - int 型の商と剰余を格納する構造体
ldiv_t - long 型の商と剰余を格納する構造体
MB_CUR_MAX - 設定されているロケールにおけるマルチバイト文字の最大バイト数を表すマクロ
RAND_MAX - rand 関数が返す擬似乱数の最大値
abort - プログラムの異常終了
abs - int 型の絶対値
atexit - 終了時関数の登録
atof - 文字列から double 型への変換
atoi - 文字列から int 型への変換
atol - 文字列から long 型への変換
bsearch - バイナリサーチ
calloc - メモリブロックの割り付けとクリア
div - int 型どうしの商と剰余
exit - プログラムの終了
free - メモリブロックの解放
getenv - 環境変数の参照
labs - long 型の絶対値
ldiv - long 型どうしの商と剰余
malloc - メモリブロックの割り付け
mblen - マルチバイト文字の構成バイト数
mbstowcs - マルチバイト文字列からワイド文字列への変換
mbtowc - マルチバイト文字からワイド文字への変換
qsort - クイックソート(ただし、仕様上はソートを行うとあるだけで「クイックソートによる」とは書かれていない)
rand - 擬似乱数
realloc - メモリブロックの再割り付け
srand - 乱数種の設定
strtod - 文字列から double 型への変換
strtol - 文字列から long 型への変換(基数指定可)
strtoul - 文字列から unsigned long 型への変換(基数指定可)
system - コマンドプロセッサの呼び出し
wcstombs - ワイド文字列からマルチバイト文字列への変換
wctomb - ワイド文字列からマルチバイト文字列への変換
#文字列操作
memchr - メモリブロック中の文字検索
memcmp - メモリブロックの比較
memcpy - メモリブロックのコピー
memmove - メモリブロックの転送
memset - メモリブロックを指定文字で埋める
strchr - 文字列内の文字探索
strcat - 文字列の連結
strcmp - 文字列の比較
strcpy - 文字列のコピー
strcspn - 文字列中の指定文字群を含まない先頭部分の長さ
strerror - エラー番号に対応したエラーメッセージ文字列の取得
strcoll - ロケールに応じた順序付けによる文字列の比較
strlen - 文字列の長さ
strncat - 字数制限付きで文字列の連結
strncmp - 字数制限付きで文字列の比較
strncpy - 字数制限付きで文字列のコピー
strpbrk - 文字列中の文字群探索
strrchr - 文字列内の逆方向文字探索
strspn - 文字列中の指定文字群を含む先頭部分の長さ
strstr - 文字列中の文字列探索
strtok - 文字列からの字句切り出し
strxfrm - ロケールに応じた順序付けになるように文字列を変換
#C言語の参考
http://c-lang.sevendays-study.com/index.html
http://www.ysr.net.it-chiba.ac.jp/data/cc.html
https://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96C%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA#.E5.85.A5.E5.87.BA.E5.8A.9B_.3Cstdio.h.3E
#C++の基本
#include <iostream>
using namespace std;
int main()
{
cout << "hello world!!" << endl;
}
コンパイル
g++ cout.cpp -o cout
実行
./cout