C言語って…at GAMEDEV
C言語って… - 暇つぶし2ch250:たける
15/02/03 16:26:24.96 vhteoDYM.net
くわしく

251:名前は開発中のものです。
15/02/06 12:13:45.69 Dq4nT0Xs.net
>>242
C言語学び始めの俺には非常にわかりやすいレスだ
コピペして自分のメモ帳に残しておくわ

252:名前は開発中のものです。
15/02/10 18:37:41.43 avKQ6s0l.net
>>242
そのint aがレジスタに割り当てられたとき、&aはどこのアドレスを指すの?

253:名前は開発中のものです。
15/02/13 16:10:49.40 fRUihGLp.net
>>242って4年前のレスだぞ…。

一応答えておくと、メモリ上の変数をそのつどレジスタにコピーしてから演算するわけで、
殆どの場合、変数にはメモリが割り当てられている。その辺りの動作は基本的に
コンパイラがうまくやってくれているので知ってさえいればいい。
(あらかじめ作成した)静的変数や(newで作成した)ヒープ上の変数は
必ずメモリ上の実体があるから&aは必ずそこを指す。
一方、(関数内などローカルスコープで一時確保した)動的変数は、コンパイラの最適化によっては
例外的にメモリ上の実体を持たず、レジスタだけということもあるはず。
だけどその関数内で&aという表記が用いられたら、コンパイラは最適化を見送って
きちんとスタック上にメモリを割り当てることになる。スコープから出るまでは&aはそこを指す。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch