C言語 の ポインタ をわかりやすく説明

2023年2月8日

C言語 でつまずくのが ポインタ です。

ポインタ変数に変数のアドレスを代入することまでは分かります。

ポインタの宣言と変数のアドレスの代入

int *p = &x;
ポインタの宣言

データ型 *ポインタ変数名;

アドレスを代入

変数に「&」をつけるとそのアドレスが取得できます。

&変数名;
ポインタの宣言と変数のアドレスの代入

サンプルプログラム

#include <stdio.h>

int main() {
    int x = 10;
    int *p = &x;  // ポインタ変数pの宣言と変数xのアドレスの代入。
    printf("変数xのアドレス = %p\n", &x);
    printf("ポインタ変数pの示すアドレス = %p\n", p);

    return 0;
}

上記を「pointer.c」の名前で保存しコンパイルします。

実行ファイル名を指定

実行ファイル名を指定する場合は「-o ファイル名」をつけて「gcc -o sum sum.c」のようにコンパイルします。

gcc -o pointer pointer.c

「pointer」と入力して実行します。

「pointer」と入力して実行します。

ポインタ変数pに代入された変数xのアドレスが指し示す先の中身を操作

ポインタ変数pに代入された変数xのアドレスが指し示す先の中身を操作
#include <stdio.h>

int main()
{
    int *p, x; //int型の変数xとint型のポインタ変数pの宣言
    p = &x;    //ポインタ変数pに変数xのアドレスを代入

    x = 10;    //変数xに10を代入
    printf("x = %d\n", x); //変数xの値を出力

    *p = 100;  //ポインタ変数pに代入された変数xのアドレスが指し示す先の中身に100を代入
    
    printf("x = %d\n", x); //変数xの値を出力
    
    return 0;
}
アドレスの指し示す先に格納されている値を操作

*を用いることで、そのアドレスに格納されている値にアクセスすることができます。

*変数名
実行ファイル名を指定

実行ファイル名を指定する場合は「-o ファイル名」をつけて「gcc -o sum sum.c」のようにコンパイルします。

上記を「pointer2.c」の名前で保存しコンパイルします。

gcc -o pointer2 pointer2.c

「pointer2」と入力して実行します。

「pointer2」と入力して実行します。

C言語 で つまずくところ

C言語ポインタ

Posted by seikatu