消息关闭
    暂无新消息!

C语言中free函数的一些疑问

问题作者 : Jordon2017-06-05发布

这道题为什么是选C呢?free函数把s变量给释放了,那么传入的q也应该是跟着被释放吗?如果q释放了,那么输出应该是0啊(NULL的常量),为什么是1呢?


1个回答

︿ 2

首先,malloc已经将s的值改变了,s所存的已经是新空间的地址了。所以接下来对s的任何操作都不能影响main函数中的p。
由于是按值传参,那么,s其实也是一个形参,因为它代表的是地址。
free(s)只是将新申请的地址给free了,和原本的地址没有任何关系
最后输出1,是因为,q指向的是a的地址。所以,解引用的结果自然就是a的值也就是1。

最后!!!不要学这道题的例子,千万不要写void main这样的声明,会被笑话的。。