天天看點

6、關于《程式設計實踐》中作者叙述gets讀取資料會覆寫掉函數傳回位址的思考,我認為作者叙述有誤

在程式設計實踐一書中,作者說如下程式會出問題:

int main()

{

char buf[20];

gets(buf);

if(...)

}

這是因為gets不限制讀入資料的長度,是以應當由fgets來代替。這一點本人同意。但是作者有一個觀點,本人不能贊同。

作者說,如果gets中讀入的資料太多,可能會把函數(gets)的傳回位址也覆寫。我們都知道,函數的傳回位址在棧中,就本程式而言,其在棧中的位置的位址肯定比buf的位址低,而buf資料而言是向上生長的,怎麼可能覆寫掉函數的傳回位址呢?

    是以,本人認為,作者叙述有誤。歡迎高手指教。

繼續閱讀