Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でポインタへのポインタ(ダブルポインタ)を定義する方法

C言語において、ダブルポインタ(二重ポインタ)の宣言方法は、通常のポインタの宣言と非常によく似ています。違いは、ポインタ名の前にアスタリスク「*」をもう1つ追加するだけで済むという点です。

構文

ダブルポインタを宣言するための構文は以下の通りです。

int **ptr;

サンプルコード

以下は、ポインタへのポインタの使い方を示すCプログラムの例です。

#include<stdio.h>
// ポインタへのポインタを実演するCプログラム
int main(){
    int element = 24;
    // element用のシングルポインタ
    int *ptr2;
    // ptr2用のダブルポインタ
    int **ptr1;
    // 変数elementのアドレスをptr2に格納
    ptr2 = &element;
    // ポインタptr2のアドレスをptr1に格納
    ptr1 = &ptr2;
    // シングルポインタとダブルポインタの両方を使って
    // elementの値を表示
    printf("element value = %d\n", element );
    printf("element value using single pointer = %d\n", *ptr2 );
    printf("element value using double pointer = %d\n", **ptr1);
    return 0;
}

実行結果

上記のプログラムを実行すると、以下のような結果が出力されます。

element value =24
element value using single pointer = 24
element value using double pointer = 24

動作の仕組み

このプログラムでは、まず変数elementのアドレスがシングルポインタptr2に格納されます。次に、そのptr2自体のアドレスがダブルポインタptr1に格納されます。これにより、*ptr2による1段階の間接参照でも、**ptr1による2段階の間接参照でも、同じ変数elementの値にアクセスできるようになります。

ダブルポインタは、2次元配列の動的確保や、関数内でポインタそのものを書き換えたい場合などに活用される重要な概念です。

  1. C言語の線形探索で配列内の最小値を見つける方法を徹底解説

    C言語の探索アルゴリズムの種類C言語で使われる代表的な探索手法は、大きく分けて以下の2つです。線形探索(リニアサーチ)二分探索(バイナリサーチ)線形探索とは線形探索は、配列の先頭から順番に要素を一つずつ比較しながら目的のキーを探す、最も基本的な探索アルゴリズムです。データがソート(整列)されていなくても使用できる実装が非常にシンプルで理解しやすい欠点:データ数が多いほど処理時間が長くなり、システムの効率を低下させる可能性がある入出力のイメージは以下の通りです。入力:ソートされていない要素のリスト、探索キー出力:・成功 … キーが見つかった場合・失敗 … キーが見つからなかった場合例1:線形探索

  2. Windows 11に言語を追加する方法|表示言語の変更手順をわかりやすく解説

    Windows 11への言語追加について Microsoftの発表によると、Windows 11はWindows 10ユーザー向けに無料アップグレードとして提供されました。これにより、Windows 11のハードウェア要件を満たしているPCであれば、誰でも無料で最新バージョンへ移行できます。新しいWindowsには、ゲームやアプリの実行など、PCでの作業をより快適にする数多くの新機能が搭載されています。 たとえば、Windows 11ではユーザーインターフェースが完全に刷新され、タスクバー中央に配置された新しいスタートボタンと、デザインが一新されたスタートメニューが大きな特徴となっています。ま