スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ポインタ渡し

前回の続き。関数のポインタ渡しについてです。
間が開きすぎてもう前のわすれたYO!なんて言わないでください><

まずポインタ渡しってどんなときに使いたいの?
これは前回の最後にかきましたよね!
ほかの関数に変数の内容を変化させてほしい!」という場合に使えるのです。

では実際に見ていきましょう

void increment(int *p)
{
   (*p)++;
}

main()
{
   int unm;
   num = 10;
   increment(&num);

   printf("num=%d",num);
}

さてこの例題ですがまずは1行目から
void increment(int *p)
*をつけることで格納されている場所を渡すことができましたよね。
そして
   (*p)++;
ここで「場所」の中の値をインクリメントしています

このように実行するとnum=11と表示されます

indremenr()関数が呼ばれたとき内部ではどのようになっていたのか見ていきましょう
前回と違って今度はintの変数ではなくポインタ変数であるPがつくられました(つまりは変数の場所を格納する変数が作られたわけです)
そのPの中にmain()の中の変数numの場所がコピーされました
つまりは場所さえわかっていればアスタリスク『*』をつけることでそれを変数そのものとして扱うことができちゃうわけです。
ってことはですよ。ポインタ変数を渡せばどこからでも変数の場所がわかるのでそのものの値を読んだり書いたりできちゃうってことですね。
上記のことから
(*p)++;
と書くことでPの中身であるnumそのものに対して演算(++)を行っているわけです。

ということで、ほかの関数の中で変数の中身を書き換えたいときはポインタ変数にその変数の場所を格納して渡す!
これを覚えておきましょう><

さて、明日からも
がんばるぞー('A`)おー。

コメントの投稿

非公開コメント

プロフィール

しー

Author:しー
*使用ソフト*
メタセコ
Blender
modo

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
WEB拍手
カテゴリ
最新コメント
検索フォーム
リンク
ブロとも申請フォーム

この人とブロともになる

いらっしゃいませ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。