配列はアドレスを保持しており、多くの点でポインタ型変数と同じように扱うことができます。

以下のコードでは、配列変数の中身を表示しています。

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

int main() {
    char s[10];

    strcpy(s, "Hello!");

    printf("%p\n", s);
    printf("%llx\n", s);

    return 0;
}

出力

0x7ffc5473ed80
7ffc5473ed80

配列である s に格納されている値は、アドレスです。
また、以下のコードを実行してみてください。

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

int main() {
    char s[10];

    strcpy(s, "Hello!");

    printf("%p\n", s);
    printf("%c\n", *s);

    return 0;
}

出力

0x7fff68552cc0
H

s に格納されているアドレスに格納されている値をアスタリスクをつけて表示したところ、文字列の先頭の H が出力されました。

さらに以下のコードを実行してみてください。

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

int main() {
    char s[10];

    strcpy(s, "Hello!");

    printf("%p\n", s);
    printf("%p\n", s+1);
    printf("%c\n", *(s+1));

    return 0;
}
0x7ffec86288e0
0x7ffec86288e1
e

ポインタと同じように、アドレスに 1 を足すと、2文字目の e が表示されました。

上記から配列はポインタと同じようにアドレスを保持しており、多くの点でポインタと同じような操作ができることがわかりました。

次の記事

scanf関数で入力を受け取る

記事一覧

ゾンビでもわかるC言語プログラミング


0件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です