【独学C言語】ダブルポインタとは

※この記事は「2021年3月12日」に更新しました。

今回は、ダブルポインタ(多重間接参照)について紹介します。

前回は、構造体とポインタについて解説しました。

【独学C言語】構造体とポインタ

【独学C言語】構造体とポインタ

2020年5月6日

多重関節参照は、少しややこしく感じるかもしれませんが、基本はポインタと同じです。

難しい場合は、紙にメモリイメージの図を書くと理解しやすくなります。

ダブルポインタとは

ダブルポインタとは、多重関節参照のことで、ポインタのポインタのことです。

以下のように *(アスタリスク)を二重で付けます。

データ型 **変数名;

ポインタは、変数のアドレスを指して、そのポインタのアドレスを別のポインタが指しているということです。

おそらく説明だけだと理解しにくいと思います。

次のサンプルプログラムでどのように使うか紹介します。



サンプルプログラム【C言語】

ダブルポインタ(多重関節参照)を理解するためのサンプルプログラムです。

sample.c というソースファイルを作成します。

#include <stdio.h>

int main(int argc, char **argv)
{
    int length;

    if(argc != 2)
    {
        printf("\n");
        printf("How to use : %s string", *argv);
        printf("\n\n");
        return 1;
    }

    for(length = 0 ; *(*(argv+1)+length) != '\0' ; length++);

    printf("\n");
    printf("Input string : %s", *(argv+1));
    printf("\n");
    printf("String length : %d", length);
    printf("\n");

    return 0;
}

引数付き main関数を使っています。

argc は、引数の個数です。

argv にダブルポインタを使っています。

例えば、以下のように入力したとします。

sample.exe str1

argv は、ポインタ配列の先頭アドレスを格納しています。

ポインタ配列の先頭アドレスに格納された値は、sample.exe という文字列の先頭アドレスです。

つまり、*(argv+1) は、str1 という文字列の先頭アドレスになります。

実行結果は以下の通りです。

ダブルポインタとは

独学C言語について【おまけ】

タカフミブログの独学C言語シリーズは、C言語を独学するということを目的に記事を書いています。

他の記事に興味がある方は以下をご参照下さい。

C言語に関する記事一覧

C言語は、古典的なイメージがある方もいるかもしれませんが、他の多くのプログラミング言語のベースになっています。

実際に本格的なソフトを開発するとなるとなかなか大変ですが、とにかくハードウェアのリソースが少なくても高速に動くのが最大のメリットです。

プログラマーや SE(システムエンジニア)を目指す方は一度お試し下さい。

最後に【ダブルポインタについて】

いかがでしょうか。

今回は、ダブルポインタ(多重関節参照)について、紹介しました。

次回は、ファイル操作について、解説していきます。

【独学C言語】ファイル操作

【独学C言語】ファイル操作

2020年5月19日

正直、どういうときに便利かいまいち理解しにくいかもしれません。

C言語のポインタはとにかく慣れなので、色々なコードを書いて勉強していきましょう。