2020-05-15

関数ポインタって、ようするにロードされたときに決まるから、実質固定値(値は毎回わかる)

これの意味がわかっていない、学生が多すぎる とのこと

 

実行のたびに値が毎回変わる固定値(ようするに実行する1回のなかでは同じ値だから固定値としてあつかってよい)

 

なんでこれをしらないやつが、教えてるんだ?

  • 多分おまえが言いたいのは「関数のアドレス」のことだ。 関数ポインタの値はロードされたときに決まるとは限らないし再代入もできるから固定値じゃない。

    • どんな固定値だって実行時にメモリを書き換えりゃそりゃかわるわ では、そういうハッキング技法以外で、一般的な範疇でどうやったら、実行時のローダーによる値の変更以外に変わる...

      • ? 関数ポインタはNULLでも不正値でもなんでも入ってる可能性があるぞ?

        • NULLはあるわな。 ゼロページがあるから 一般的には初期値はNULLだわな。 で、初期化を忘れている以外でNULLになったばあいでそれを参照する場合 それは、バグではないのか?と聞かれる...

      • 関数ポインタ=printfのアドレス   左辺でも右辺でもいいんだが どうやったら、この値の意味論の値がprintfのアドレス以外になるのか?というのと値そのものは変わるが それは変わっ...

        • たとえば、関数ポインタの値バトルとかで、値の大きいほうが勝つ!というゲームだとした場合に 勝敗って毎回変わるか?

      • いや、あのさあ…… 「c言語 関数ポインタ サンプル」で検索して、最初に出てくるページの時点で変更する例が出てくるんだが https://www.kishiro.com/programming/c/function_pointer.html

  • 自分の方が理解できてると思いこんでる馬鹿生徒に教えなきゃならない先生には同情するよ

    • 「自分が生徒だと認めると発狂するからっていう下らない理由でTAになりきろうとする元増田」じゃなくて?

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん