ポインタの配列

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

C 言語のプログラミングでは、ポインタの配列は、各要素が int、char、float などの他のデータ型へのポインタである配列です。この実験では、整数型ポインタの配列と文字型ポインタの配列にアクセスする方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/constants("Constants") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/constants -.-> lab-123201{{"ポインタの配列"}} c/for_loop -.-> lab-123201{{"ポインタの配列"}} c/arrays -.-> lab-123201{{"ポインタの配列"}} c/pointers -.-> lab-123201{{"ポインタの配列"}} c/output -.-> lab-123201{{"ポインタの配列"}} end

整数型ポインタの配列

このステップでは、整数型ポインタの配列にアクセスします。~/project/ ディレクトリ内の main.c ファイルを開き、次のコードを貼り付けます。

#include <stdio.h>

// Global declaration.
const int MAX = 5;

int main() {
  printf("\n\n\t\t==== Array of Integer Pointers ====\n\n\n");

  int var[] = {10, 20, 30, 40, 50}; // 整数型ポインタの配列(ここではvar)を初期化
  int i = 0;

  /*
      ptrは整数型ポインタの配列です。つまり、
      各配列要素のアドレスを格納します
  */
  int *ptr[MAX];

  for(i = 0; i < MAX; i++) {
    /*
        各配列要素のアドレスをptr配列に割り当てます
    */
    ptr[i] = &var[i];
  }

  for(i = 0; i < MAX; i++) {
    /*
        ptr[i]は要素var[i]のアドレスを格納しています。
        したがって、*ptr[i]はptr[i]の位置に格納されている要素の値を返します
    */
    printf("Value of var[%d] = %i\n\n", i, *ptr[i]);
  }

  printf("\n\n\t\t==== End of Program ====\n\n\n");
  return 0;
}

このプログラムは、整数型ポインタの配列を初期化し、各配列要素のアドレスをポインタ配列に割り当てます。その後、ポインタ配列を使用して各要素の値を表示します。

文字型ポインタの配列

このステップでは、文字型ポインタの配列にアクセスします。前のステップのコードの後に次のコードを貼り付けます。

#include <stdio.h>

// Global declaration.
const int MAX = 4;

int main() {
  printf("\n\n\t\t==== Array of Character Pointers ====\n\n\n");

  char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // 文字型ポインタの配列(ここではnames)を初期化
  int i = 0;

  for(i = 0; i < MAX; i++) {
    printf("Value of names[%d] = %s\n\n", i, names[i]);
  }

  printf("\n\n\t\t==== End of Program ====\n\n\n");
  return 0;
}

このプログラムは、文字型ポインタの配列を初期化し、各文字列の最初の文字のアドレスをポインタ配列に割り当てます。その後、ポインタ配列を使用して各要素の完全な名前を表示します。

プログラムのコンパイルと実行

このステップでは、プログラムをコンパイルして実行します。ターミナルを開き、~/project/ ディレクトリに移動します。プログラムをコンパイルするには、次のコマンドを入力します。

gcc main.c -o main

正常にコンパイルされた後、プログラムを実行するには、次のコマンドを入力します。

./main

このコマンドにより、プログラムが実行され、ターミナルに出力が表示されます。

		==== Array of Integer Pointers ====


Value of var[0] = 10

Value of var[1] = 20

Value of var[2] = 30

Value of var[3] = 40

Value of var[4] = 50


		==== Array of Character Pointers ====


Value of names[0] = Google

Value of names[1] = Amazon

Value of names[2] = Facebook

Value of names[3] = Apple


		==== End of Program ====

完全なコード

#include <stdio.h>

// グローバル宣言

const int MAX = 5;

int main() {
  printf("\n\n\t\t==== 整数型ポインタの配列 ====\n\n\n");

  int var[] = {10, 20, 30, 40, 50}; // 整数型ポインタの配列(ここではvar)を初期化
  int i = 0;

  /*
      ptrは整数型ポインタの配列です。つまり、
      各配列要素のアドレスを格納します
  */
  int *ptr[MAX];

  for(i = 0; i < MAX; i++) {
    /*
        各配列要素のアドレスをptr配列に割り当てます
    */
    ptr[i] = &var[i];
  }

  for(i = 0; i < MAX; i++) {
    /*
        ptr[i]は要素var[i]のアドレスを格納しています。
        したがって、*ptr[i]はptr[i]の位置に格納されている要素の値を返します
    */
    printf("Value of var[%d] = %i\n\n", i, *ptr[i]);
  }

  printf("\n\n\t\t==== 文字型ポインタの配列 ====\n\n\n");

  char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // 文字型ポインタの配列(ここではnames)を初期化
  i = 0;

  for(i = 0; i < MAX; i++) {
    printf("Value of names[%d] = %s\n\n", i, names[i]);
  }

  printf("\n\n\t\t==== プログラムの終了 ====\n\n\n");
  return 0;
}

まとめ

この実験では、整数型ポインタの配列と文字型ポインタの配列にアクセスする方法を学びました。ポインタの配列は、各要素が別のデータ型へのポインタである配列です。ポインタの配列を初期化する方法、配列要素のアドレスをポインタ配列に割り当てる方法、およびポインタ配列を使用して配列要素にアクセスする方法を学びました。