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

C言語で文字列へのポインタ配列を作成する方法を徹底解説

C言語では、複数の文字列を効率的に扱うために「文字列へのポインタ配列」を利用できます。本記事では、ポインタ配列の基本的な概念、宣言・初期化の方法、2次元文字配列との違いやメリット、さらに実際に動作するサンプルコードをわかりやすく解説します。

文字列へのポインタ配列とは

ポインタ配列とは、各要素が文字列の先頭アドレス(ベースアドレス)を指すポインタとなっている配列のことです。この仕組みを使えば、複数の文字列をひとつの配列としてまとめて管理できます。

宣言と初期化は以下のように行います。

char *a[3] = {"one", "two", "three"};
// a[0] は文字列 "one" の先頭アドレスへのポインタ
// a[1] は文字列 "two" の先頭アドレスへのポインタ
// a[2] は文字列 "three" の先頭アドレスへのポインタ

文字列へのポインタ配列のメリット

  • 2次元の文字配列(char型2次元配列)と異なり、文字列へのポインタ配列では格納領域のメモリサイズが固定されません。文字列ごとに必要な分だけメモリが確保されます。

  • 各文字列は必要なバイト数だけを占有するため、余分なメモリ(スペース)の無駄が発生しません。

サンプルコード1:コンパイル時に文字列を初期化する

まずは、コンパイル時に文字列へのポインタ配列を宣言し、すべての要素を表示する基本的な例を見てみましょう。

#include <stdio.h>

int main(void) {
    // コンパイル時に文字列へのポインタ配列を宣言・初期化
    char *a[5] = {"one", "two", "three", "four", "five"};
    int i;

    printf("The strings are:");
    for (i = 0; i < 5; i++) {
        printf(" %s", a[i]); // 文字列の配列を出力
    }
    printf("\n");
    return 0;
}

出力結果

The strings are: one two three four five

サンプルコード2:学生名の一覧を表示する

続いて、もう少し実践的な例として、学生名を格納したポインタ配列を作成し、名前を1行ずつ表示するプログラムを紹介します。

#include <stdio.h>
#include <string.h>

int main(void) {
    // ポインタによる文字列配列を初期化
    char *students[] = {"bhanu", "ramu", "hari", "pinky"};
    int i;

    printf("The names of students are:\n");
    for (i = 0; i < 4; i++) {
        printf("%s\n", students[i]);
    }
    return 0;
}

出力結果

The names of students are:
bhanu
ramu
hari
pinky

まとめ

C言語における文字列へのポインタ配列は、char *配列名[要素数] の形式で宣言し、文字列リテラルで初期化することで簡単に作成できます。固定長の2次元配列と比べてメモリを無駄なく使える点が大きなメリットであり、文字列リストの管理に非常に便利な手法です。ぜひ実際にコードを書いて、動作を確認してみてください。

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

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

  2. JavaでJSON配列を作成する方法をわかりやすく解説

    JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x