08/11/15 14:17:40
>>2,3
なるほど.よくわかった.
小さな机ってのは,多分アキュムレータのことだよな?
アセンブラの方を思い出して想像してみるとよくわかった.
大学で
関数のreturnにはstaticな変数を用いろって話だったんだ.
理由は前スレ>>983で書いてる通り.
それであんな質問をしたんだが,return文は引数と同じで値渡しでOK?
さっきから皆ポインタがどうとかって言ってるけど,それはこういうことだよな?
char *func4(char *a,*b) {
static char s[50];
sprintf(s,"%s%s",a,b);
return s;
}
例なのでバッファオーバーランの話はなしで.
もし.sをstaticで宣言してなかったら,
sのアドレスは正しく返るけど,返したアドレスが指すところはいつ書き換えられてもおかしくない.
ということだよな?
return文が値渡しってのは,みんなどこで知ったんだ?
仕様書とかに書いてある?