基本構文
📝プログラム構造
基本となる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_ptrp(new int[5]);
I/O操作とクラス
🔄入出力操作
C言語スタイル:
#includeprintf("Hello, %s!\n", name); scanf("%d", &value);
C++スタイル:
#includestd::cout << "Hello, " << name << "!" << std::endl; std::cin >> value;
ファイル入出力 (C++):
#includestd::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) {} };