C++樹林– category –
-
C++樹林
C++の動的メモリ管理:new/deleteの危険性と現代のスマートポインタ
C++において、変数がメモリ上に存在する期間(寿命)は、主に3つの「記憶域期間」によって決まります。 自動記憶域期間 (Automatic Storage Duration): 関数やブロック {} の内部で宣言されたローカル変数。そのブロックに入ったときに生成され、ブロック... -
C++樹林
C++のポインタによる配列走査:伝統的手法と現代の安全な代替策
C++において、配列の各要素に順番にアクセスする「走査(トラバーサル)」を行う際、arr[i] のようにインデックス(添字)を使う方法が一般的です。 しかし、C言語から受け継がれたもう一つの方法として、配列の先頭要素を指すポインタを取得し、そのポイ... -
C++樹林
C++の関数への配列渡し:Cスタイルと現代的なstd::vector / std::array の比較
関数間でデータをやり取りする際、配列のような連続したデータを渡すことは基本的な操作です。しかし、C言語から続く伝統的な「Cスタイル配列」の受け渡しには、C++特有の「ポインタへの縮退」という重要なルールが存在します。 この記事では、Cスタイル配... -
C++樹林
C++のポインタと配列:arr[i] と *(arr + i) の深いつながり
C++において、「配列」と「ポインタ」は明確に異なる概念です。配列は同一の型の要素が連続して並んだメモリ領域そのものであり、ポインタはそのメモリ領域のアドレス(番地)を格納するための変数です。 しかし、C言語から受け継いだ仕様により、この2つ... -
C++樹林
C++のポインタ渡し:関数で呼び出し元の変数を変更する伝統的な方法
C++の関数は、return 文を使って呼び出し元に値を返すことができますが、返却できる値は原則として1つだけです。 もし、1つの関数で「複数の計算結果」を呼び出し元に返したい場合、どうすればよいでしょうか。例えば、一連のデータを分析して「最大値」と... -
C++樹林
C++のポインタ入門:アドレス(&)と間接参照(*)の基本
C++において「オブジェクト」とは、int 型の変数 x のように、「値を表現するための記憶域(メモリ領域)」を指します。プログラムが実行されるとき、これらのオブジェクト(変数)はコンピュータのメモリ上のどこかに配置されます。 この記事では、その配... -
C++樹林
C++の関数オーバーロード(多重定義)とインライン関数の活用法
C++の関数には、コードの可読性を高める「オーバーロード(多重定義)」と、実行効率を改善する「インライン関数」という2つの重要な機能があります。この記事では、これらの機能の基本的な定義と、現代のC++における論点について解説します。 関数のオー... -
C++樹林
C++の有効範囲(スコープ)と記憶域期間:変数の生存期間と可視性
C++プログラミングにおいて、変数を理解する上で最も重要な2つの概念が「有効範囲(スコープ)」と「記憶域期間(ストレージ期間)」です。 有効範囲 (Scope): その変数名(識別子)が、コードのどの場所から「見える」か、「アクセスできる」かを定義する... -
C++樹林
C++の参照渡し入門:& の意味と値渡しとの決定的な違い
C++の関数呼び出しにおいて、引数を渡す基本的な方法は「値渡し(Pass-by-Value)」です。しかし、値渡しには「呼び出し元の変数を変更できない」という限界があります。 この問題を解決し、関数が呼び出し元のデータを直接操作できるようにする仕組みが「... -
C++樹林
C++のデフォルト引数とビット演算:関数の柔軟な使い方と低レベル操作
C++には、関数の利便性を高める「デフォルト引数」や、コンピュータの内部表現(ビット)を直接操作する「ビット演算」といった機能が備わっています。この記事では、これらの機能の基本的な使い方と活用例を解説します。 デフォルト引数 (Default Argumen... -
C++樹林
C++のvoid関数入門:値を返さない関数の定義と活用法
C++の関数は、プログラムの部品(モジュール)として、特定の処理をひとまとめにする機能です。関数には、max() のように計算結果を「返す」ものと、単に特定の動作(アクション)を実行するだけのものがあります。 void キーワードは、関数が**「値を返さ... -
C++樹林
C++の関数宣言(プロトタイプ宣言)と「値渡し」の基本
C++プログラムは、必ず main という名前の関数から実行が開始されます。この main 関数はプログラム全体のエントリーポイント(入口)であり、その処理が終了するとプログラムが終了します。 main 関数も関数の一種であり、int main() と定義されます。こ... -
C++樹林
C++の関数入門:定義と呼び出しの基本、なぜ関数が必要か
関数とは? プログラミングを行っていると、同じような処理(ロジック)をプログラムのあちこちで実行したい場合があります。 例えば、ECサイトで「家電」カテゴリと「書籍」カテゴリのそれぞれ3つの主要商品の価格を入力し、各カテゴリの最高価格を表示す... -
C++樹林
C++の多次元配列:Cスタイル配列と std::array のネスト(入れ子)
1次元の配列はデータの「列」を表現しますが、実世界の多くのデータは「行」と「列」を持つ2次元の表(グリッド)として表現されます(例:スプレッドシート、画像ピクセル、ゲームのマップ)。 C++では、このような2次元、3次元、あるいはそれ以上の次元... -
C++樹林
C++の配列入門:伝統的なCスタイル配列と現代的なstd::array
同一の型(例:int型)のデータを多数扱う際、それらを個別の変数として宣言するのは非効率です。例えば、12ヶ月分の月間経費を管理するために expense1, expense2, ..., expense12 といった12個の変数を用意するのは現実的ではありません。 このような「... -
C++樹林
C++の列挙体ガイド:enum から C++11 enum class への進化
列挙体 (enum) とは? プログラミングにおいて、0、1、2 のような数値(いわゆる「マジックナンバー」)を直接コードに記述すると、その数値が何を意味するのかが分かりにくくなります。 C++の**列挙体(enum)**は、Status::Pending (0)、Status::Active ... -
C++樹林
C++の型変換と演算:整数除算の罠とstatic_castの正しい使い方
C++は静的型付け言語であり、int や double などのデータ型を厳密に区別します。異なる型同士で演算を行う際、C++は「型変換」に関する一連のルールに従います。これらのルールを理解していないと、特に除算(割り算)において、予期せぬバグが発生する原... -
C++樹林
C++の基本的なデータ型:整数型、浮動小数点型、bool型の完全ガイド
C++でプログラミングを行う際、データ(数値や文字など)を格納するためには、そのデータの種類に応じた「型」を指定する必要があります。型は、コンパイラに対して、そのデータのためにどれだけのメモリ領域を確保すべきか、そしてそのビットパターンをど... -
C++樹林
C++の拡張表記(エスケープシーケンス)とI/O操作子(マニピュレータ)の詳細ガイド
C++でコンソールへの出力やファイル入出力を行う際、単にデータを表示するだけでなく、書式(フォーマット)を整えることが求められます。C++では、この書式制御のために「拡張表記(エスケープシーケンス)」と「I/O操作子(マニピュレータ)」という2つ... -
C++樹林
C++のループ制御:break、continue、goto文の役割と注意点
for文やwhile文などの繰り返し処理では、ループの実行フローをより細かく制御したい場面があります。C++には、そのような要求に応えるための3つの文、break、continue、gotoが用意されています。 break文:ループを完全に中断する break文は、switch文だけ... -
C++樹林
C++の多重ループ(ネストループ)解説:二重ループの基本と使い方
多重ループ(ネストループ)とは? 「多重ループ(ネストループ)」とは、繰り返し処理(for文やwhile文など)の内部で、さらに別の繰り返し処理を行う構造のことです。 ループが二重になっている場合を「二重ループ」、三重になっている場合を「三重ルー... -
C++樹林
C++のfor文解説:基本構文と変数のスコープ(繰り返し処理)
for文とは? for文は、C++における「繰り返し文(イテレーション文)」の一つです。while文やdo-while文と同様にループ処理を行いますが、特に**「決まった回数」や「特定の範囲」を反復する処理**を記述するのに適しています。 for文の最大の特徴は、ルー... -
C++樹林
Arduinoで障害物回避!超音波センサー(HC-SR04)とサーボで滑らかな自動操舵システムを作る
Arduino(アルディーノ)を使った電子工作の醍醐味の一つに、「自動制御」があります。今回は、安価で入手しやすい「超音波距離センサー(HC-SR04)」と「サーボモーター(GeekServo 9Gなど)」を使い、障害物を検知して自動で舵を切る(操舵する)システ... -
C++樹林
Arduinoサーボ制御から応用へ!DCモーターと超音波センサー(HC-SR04)で追従システムを作る方法
Arduinoを使った電子工作は、アイデア次第で様々なものを生み出せる魅力的な趣味です。サーボモーターでアームを動かしたり、LEDを点滅させたりすることから始める方も多いのではないでしょうか。 本記事では、サーボモーターの基本的な制御から一歩進んで... -
C++樹林
ArduinoでOLED(NFP1315-61AY)が表示されない? ライブラリの間違いと解決策
Arduino(アルディーノ)を使って電子工作をしていると、センサーやディスプレイなど、さまざまな部品を扱います。特に、小型で高精細な「OLED(有機EL)ディスプレイ」は、プロジェクトの結果を表示させるのに非常に人気があります。 しかし、いざOLEDデ... -
C++樹林
C++のwhile文ガイド:条件が成立する間の繰り返し(前判定ループ)
while文とは?(前判定ループ) C++には複数の繰り返し(ループ)構文がありますが、while文はその中でも最も基本的なものの一つです。 while文は、ループ本体の処理を実行する「前」に条件式を評価します。この条件式がtrueである間、ループ本体の処理を... -
C++樹林
C++のdo-while文:基本と使い方(最低1回は実行したいループ処理)
do-while文とは? C++における「ループ(繰り返し)処理」を実現する構文の一つがdo-while文です。 while文と非常によく似ていますが、決定的な違いが一つあります。それは、ループ本体(繰り返したい処理)を最低1回は必ず実行し、その後に条件判定を行う... -
C++樹林
C++のswitch文:基本構文とbreak、defaultの使い方を解説
switch文とは? switch文は、C++における条件分岐構文の一つです。特定の式(変数など)の値を評価し、その値が一致するcaseラベルへ処理をジャンプさせます。 多くのif-else ifが連なるような条件分岐、特に「一つの変数が特定の値であるか」を順に比較す... -
C++樹林
C++入門:if文による条件分岐を完全マスター!比較・論理演算子も解説
はじめに:プログラムに「判断力」を持たせる これまでのプログラムは、上から下へ決められた命令を順番に実行するだけでした。しかし、より実用的なプログラムを作るには、「もし○○だったらAを実行し、そうでなければBを実行する」というように、状況に応... -
C++樹林
C++入門:cinでキーボード入力を受け取る方法と基本演算を完全解説
はじめに:ユーザーと対話するプログラムへ これまでのプログラムは、あらかじめ決められた処理を実行し、結果を表示するだけの一方的なものでした。しかし、ユーザーがキーボードから入力した値によってプログラムの動作が変わるようになれば、電卓やゲー...