- 898 名前:デフォルトの名無しさん [2008/06/15(日) 12:50:03 ]
- スタックに関してよくみかける記述について1つ疑問。
1)スタックはLIFO(Last In First Out)方式であり 後に入れたデータから先に読みだされる 2)関数の引数及びローカル変数はスタックに積まれる さて、問題。 int add(int a, int b) { int c; c = b; c = a+c; return c; } という関数があった場合、スタックにはこのように データが積まれると考えられる。 変数 c (ローカル変数) 変数 a 変数 b (最後の引数から積まれる) (スタック領域の先頭アドレス) 1)に従えば、データはc->a->bの順番でしか取り出せない はずだが、プログラムでは明らかにaより先にbの値を参照 して値を読みだしている。これはスタックのルールに 反するのではないか? あなたはこの疑問を明確に説明できますか?
|

|