ポインタ変数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;


により作製されたint*型のポインタ変数ptaに


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


ですので


ptaにアスタリスク演算子*をくっつけた


*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にアスタリスク演算子*をくっつけた


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


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


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


次に


pta = ptb;


が実行されると


ポインタ変数

pta

には


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


ですので


*ptaは


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


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


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


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


ソーラー「くわっ」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る