LoginSignup
3
11

More than 5 years have passed since last update.

C言語の基本

Last updated at Posted at 2017-03-19

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
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++の基本

cout.cpp
#include <iostream>
using namespace std;

int main()
{
    cout << "hello world!!" << endl;
}
コンパイル
g++ cout.cpp -o cout
実行
./cout
3
11
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
11