ポインタ変数ptaにポインタ変数ptbを代入することによりポインタ変数ptbが格納しているアドレスをポインタ変数ptaに代入することができます

アレサ「は~い😊みんな~


今日は ようこそ お越しくださいました。


今日はソーラーさんがC言語の解説をしてくれますよ~~


みんなでソーラーさんを呼んでみましょうね。



ソーラーさ~~~ん~~~~~」



ソ~ラ~「ぐわっ」


ペタペタペタ


ソーラー「ぐわっ」


アレサ「まず次のプログラムをご覧ください。


#include <stdio.h>


int main(void) {


int a = 10;

int *pta;

pta = &a;


printf("%d\n", *pta);


int b = 100;

int *ptb;

ptb = &b;

printf("%d\n", *ptb);

pta = ptb;


printf("%d\n", *pta);


return 0;


}


(EAZY IDECの場合)


コンパイル結果

10

100

100


(Visual Studioの場合)


ビルド実行結果

10

100

100


アレサ「このプログラムの前半の命令文


int a = 10;

int *pta;

pta = &a;


printf("%d\n", *pta);

では


int *pta;


により作製されたポインタ変数ptaに


変数aのアドレス&aが代入されています。


ですので


*ptaはアドレス&aのメモリに格納されている数値10をあらわすことになります。


printf("%d\n", *pta);


の実行結果が10になっているのがわかりますね。」


ソーラー「ぐえっ」


アレサ「次に


このプログラムの後半の部分の命令文


int b = 100;

int *ptb;

ptb = &b;

printf("%d\n", *ptb);

pta = ptb;


printf("%d\n", *pta);


をご覧ください。


int b = 100;

int *ptb;

ptb = &b;

により


作製されたポインタ変数ptbに

変数bのアドレスが代入されています。


ですので


*ptbはアドレス&bのメモリに格納されている数値100をあらわすことになります。


printf("%d\n", *ptb);

の実行結果が100となっていることからもそのことがわかりますね。


次に


pta = ptb;


が実行されると


ポインタ変数

pta

には


ポインタ変数ptbの格納しているアドレス&bが代入されることになります。


ですので


*ptaは


アドレス&bのメモリに格納されている数値100をあらわすことになります。


printf("%d\n", *pta);


の実行結果が100となっていることからも


そのことがわかりますの。」


ソーラー「くわっ」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます