C/C++入門向けチートシート

プログラミング学習の第一歩をスムーズに 🚀

2025年3月23日

基本構文

📝プログラム構造

基本となるC/C++プログラムの構造:

#include <iostream>

int main() {
    // ここにコードを書く
    return 0;
}

💬コメント

単一行コメント: // これは単一行コメント

複数行コメント: /* これは 複数行コメント */

🏷️変数宣言

C言語スタイル: int count = 10;

C++スタイル: auto value = 5.0;

定数: const double PI = 3.14159;

データ型

📊基本データ型

整数型: int, short, long, long long

浮動小数点型: float, double

文字型: char

論理型: bool (C++のみ)

🔄型修飾子

signed/unsigned: 符号の有無

const: 値の変更を禁止

volatile: 最適化の抑制

🔄型変換

C言語スタイル: (int)doubleValue

C++スタイル: static_cast<int>(doubleValue)

制御構造

🔀条件分岐

if文:

if (条件) {
    // 真の場合
} else if (別の条件) {
    // 別の条件が真の場合
} else {
    // それ以外の場合
}

switch文:

switch (式) {
    case 値1:
        // 処理1
        break;
    case 値2:
        // 処理2
        break;
    default:
        // デフォルト処理
}

三項演算子: 条件 ? 真の値 : 偽の値

🔄ループ構造

for文:

for (初期化; 条件; 更新) {
    // 繰り返し処理
}

while文:

while (条件) {
    // 繰り返し処理
}

do-while文:

do {
    // 繰り返し処理
} while (条件);

↪️ジャンプ文

break: ループや switch から抜ける

continue: 次の繰り返しへ進む

return: 関数から戻る

goto: 指定したラベルへジャンプ(非推奨)

関数

📋関数宣言と定義

関数プロトタイプ:

戻り値の型 関数名(引数リスト);

関数定義:

戻り値の型 関数名(引数リスト) {
    // 関数の本体
    return 戻り値;
}

ラムダ式 (C++11以降):

auto func = [キャプチャ](引数) -> 戻り値型 {
    // 処理
    return 値;
};

🔄関数オーバーロード (C++のみ)

同じ名前で異なる引数を持つ複数の関数を定義できる:

void print(int value);
void print(double value);
void print(string text);

配列とポインタ

📚配列

宣言と初期化:

int numbers[5]; // 未初期化の配列
int values[] = {1, 2, 3, 4, 5}; // 初期化付き

多次元配列:

int matrix[3][4]; // 3行4列の2次元配列

配列へのアクセス:

int value = numbers[2]; // 3番目の要素
numbers[0] = 10; // 最初の要素に代入

👉ポインタ

宣言と初期化:

int* ptr; // ポインタの宣言
int value = 5;
ptr = &value; // アドレスの取得

デリファレンス:

int value = *ptr; // ポインタが指す値を取得
*ptr = 10; // ポインタを通して値を変更

配列とポインタの関係:

int arr[5];
int* p = arr; // 配列名はポインタとして扱える
// p[0] は arr[0] と同じ

🧠動的メモリ管理

C言語スタイル:

int* p = (int*)malloc(5 * sizeof(int));
free(p); // 使用後に解放

C++スタイル:

int* p = new int[5];
delete[] p; // 配列の場合は delete[]

// スマートポインタ(C++11以降)
std::unique_ptr p(new int[5]);

I/O操作とクラス

🔄入出力操作

C言語スタイル:

#include 

printf("Hello, %s!\n", name);
scanf("%d", &value);

C++スタイル:

#include 

std::cout << "Hello, " << name << "!" << std::endl;
std::cin >> value;

ファイル入出力 (C++):

#include 

std::ifstream inFile("input.txt");
std::ofstream outFile("output.txt");

🧩クラスと継承 (C++のみ)

クラス定義:

class Person {
private:
    std::string name;
    int age;
    
public:
    Person(std::string n, int a) : name(n), age(a) {}
    
    void display() {
        std::cout << name << ", " << age << std::endl;
    }
};

継承:

class Student : public Person {
private:
    std::string school;
    
public:
    Student(std::string n, int a, std::string s)
        : Person(n, a), school(s) {}
};