6、关于《程序设计实践》中作者叙述gets读取数据会覆盖掉函数返回地址的思考,我认为作者叙述有误

在程序设计实践一书中,作者说如下程序会出问题:

int main()

{

char buf[20];

gets(buf);

if(...)

}

这是因为gets不限制读入数据的长度,所以应当由fgets来代替。这一点本人同意。但是作者有一个观点,本人不能赞同。

作者说,如果gets中读入的数据太多,可能会把函数(gets)的返回地址也覆盖。我们都知道,函数的返回地址在栈中,就本程序而言,其在栈中的位置的地址肯定比buf的地址低,而buf数据而言是向上生长的,怎么可能覆盖掉函数的返回地址呢?

    所以,本人认为,作者叙述有误。欢迎高手指教。

原文地址:https://www.cnblogs.com/mydomain/p/1791586.html