【独学C言語入門⑯】ポインタ

C言語の難関のポインタをご紹介します。

住所名義
1丁目2番地太郎

①太郎の住所は「1丁目2番地」
②1丁目2番地の名義は「太郎」

この2つの文章を元にポインタを説明します。まずは①ですが太郎を変数aとすると

①a(太郎)のアドレス(住所)は&a(1丁目2番地)

となります。これは前回ご説明しましたね。次に②ですが、住所をpとするとC言語ではこのように表現します。

②p(1丁目2番地)の値(名義)は*p(太郎)

このpのようにアドレス(住所)を表す変数をポインタと呼びます。

ポインタのイメージが難しい方もおられるかと思いますので表でご説明します。

アドレス (住所)値 (名義)
1丁目2番地太郎
&aa
p*p

この表のように「a = *p」「p = &a」が成り立ちます。

実際にテストしてみます。

#include <stdio.h>

main()
{
   char a;
   char *p; //ポインタ変数は前に*

   a = 'A';
   p = &a;

//変数aを基準

   printf("%x\n", &a);
   printf("%c\n", a);

//ポインタ変数pを基準

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

//右が切れたら左にスワイプしてください

ポインタはC言語の最初の難関ですが、可能な限り簡単にご説明できるようにしてみました。アドレスという概念が理解できるまでポインタは理解が難しいですが、しっかりとご理解をお願いします。

独学C言語入門一覧に戻る