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