老师:这个是您书上的代码,因我我按照我自己的理解,写了一下代码,我知道值传递的时候自定义函数是不能传回到主函数中的。但是我就在模仿您书上的代码写的时候,出现了错误,然后赋值了您书上的源代码,结果也是同样的错误。当我吧数组cSelect[]中放入了元素个数后,错误就没有了。我现在在想个问题,当我给数组赋初值的时候,数组会根据元素自动调整元素长度,那么为何这个函数会出现错误,显示数组周围的栈已破坏?我也知道函数在被调用完之后会被系统自动销毁,可是数组长度写上以后就不会出现这样的错误,这里的原理是什么?我个人理解的是:因为定义数组的时候系统给开辟了一个连续的内存空间,当内存被写入的时候这个连续的内存空间在堆区是不会销毁掉的,知道主函数结束才会被销毁。但是当数组没有长度,也没有初值的时候,所有的数据都存在了栈区里面的,scanf写入的时候也是存储在栈区的。因为内存没有为数组开辟连续内存空间?那么问题又来了,如果以上表述是正确的,那么主函数的数据是不是在没有开辟内存空间的时候,所有的数据都是存在栈区的。如果是这样,那和我理解的数据区存储的都是在栈区的相违背了。老师我以上的三个问题没有弄清楚,麻烦您讲一下,越详细越好,麻烦耽误您几分钟,不胜感激
首页上一页 1 下一页尾页 5 条记录 1/1页