*

C言語 バッファオーバーランまで 関数の引数ポインタ

公開日: : Mac

関数引数としてのポインタ

今回は関数引数としてのポインタに関して。
バッファオーバーランを試す前に色々復習と予備知識を補います。

シリーズ

C言語 バッファオーバーランまで ポインタ考察編
・C言語 バッファオーバーランまで 関数の引数ポインタ

動作環境

windows7 x86?
cygwin 1.7.16?

予備知識

・メモリの大まかな概念
10-3.ポインタと文字列

ソースコード

オライリー先生は優秀です。
優秀故に素人にはハードルが高い場合があります。
オライリー先生のソースコードにコメントと数行のソースコードを足しただけです。

#include 

void inc_count(int *count_ptr);
int main(void);

void inc_count(int *count_ptr)
{
  // アドレス(ポインター)として引数を受け取り
  //「*count_ptr」を付け実態を参照、数をインクリメント
  ++(*count_ptr);
}

int main(void)
{
  int count = 0;

  while (count < 10)
    // countの参照しているアドレス(ポインター)を引数として関数呼び出し
    inc_count(&count);
  
  // output [ 10 ]
  printf("count : %d", count);

  return 0;
}

解説すると関数の引数に変数が参照しているアドレスを渡して、
関数側はアドレスの参照する実態の数をインクリメントする。

別にアドレスじゃなくて、引数にそのまま数を渡せば良いのでは?
と思ったら思考回路はショート寸前です。はい。自分の事ですが何か?

ダメソースコード

C言語はまだまだ勉強中ですが、ぱっとみでこれは「ダメダナ(・x・)」

#include 

int inc_count(int count);
int main(void);

int inc_count(int count)
{
  ++(count);
  return count;
}

int main(void)
{
  int count = 0;

  while (count < 10)
    count = inc_count(count);

  printf("count : %d", count);

  return 0;
}

なんで「ダメダナ(・x・)」の理由は、
・返却値として受け取った値を代入し直してる。
・関数側でも返却値を呼び出される度に返却してる。

一昔前のマシーンではリソースが今程ではなかったので、ソースコードをいかに
スマートに書くかに重点が置かれてたらしいのですが?(※知ったかぶりです)
今は可読性を上げるほうが重要になってます。

この辺りがゆとり世代と言われる所以!?などと思ったりしなかったり?

実際はこんな単純な話ではないし、コード量が増えたりした場合
、構造体やオブジェクトを扱う場合はどうなるのか?
などの疑問は残りますが、知識を徐々に深めたいと思います。

次回

次回に続け!

関連記事

apache -h

Macで ローカルサーバー構築 Apache設定編

Macで ローカルサーバー環境を構築するまで Apache設定編 ネットでの情報は必要最低限しか載

記事を読む

apache -h

Macで ローカルサーバー構築 Apache起動編

Macで ローカルサーバー環境を構築するまで Apache起動編 ネットでの情報は必要最低限しか載

記事を読む

Mac ネットワークユーティリティ

Macで ローカルサーバー構築 ローカルネットワーク参加編

Macで ローカルサーバー環境を構築するまで Apache設定編 ネットでの情報は必要最低限しか載

記事を読む

PHP 5.4.17

Macで ローカルサーバー構築 PHP設定編

Macで ローカルサーバー環境を構築するまで PHP設定編 ネットでの情報は必要最低限しか載ってな

記事を読む

apache -h

Macで ローカルサーバー構築 Postfix基本編

Macで ローカルサーバー環境を構築するまで Apache起動編 ネットでの情報は必要最低限しか載

記事を読む

jquery-logo_png
jQuery 水平スクロール&cssでカスタム可能なスクロールバーなプラグイン

水平スクロール&cssでカスタム可能なスクロールバーなプラグイン j

c
C言語 バッファオーバーランまで 関数の引数ポインタ

関数引数としてのポインタ 今回は関数引数としてのポインタに関して。

c2
C言語 バッファオーバーランまで ポインタ考察編

趣旨 ただC言語を勉強してもモチベーションがあがり辛いので、 取り

droid
Google Cloud Messaging プロジェクトナンバー API Key取得編 2014/07最新版

Google Cloud Messaging プロジェクトナンバー A

jquery-logo_png
jQuery removeClass 特定のクラスを全て削除

特定のクラスを全て削除 フォームを作成した時に、入力項目に不備があっ

→もっと見る

PAGE TOP ↑