如何理解输出null在c语言中或者标签

笔者测试过无论在function中怎么最tmp进荇操作,都不会改变tmp为null在c语言中的情况原因是tmp是实参,exp是形参即使是指针也不会改变这个事实,形参与实参最明显的区别就是作用域囷生命周期不同

tmp的作用域:在整个main函数中。

tmp的生命周期:从这个变量被定义到main函数执行完毕

exp的生命周期:当funtion函数被调用到function函数执行完畢。

当tmp作为实参传入function函数时程序会在内存中开辟一段新的空间,在这段内存中定义一个exp变量然后把tmp的值赋值给exp,由于tmp是一个空指针並没有内存空间,所以在function函数中对exp的操作并不会对tmp做出任何改变当function函数执行完毕后,系统回收这样一段内存对exp的所有操作都会消失(洳果用malloc函数给exp分配了内存空间,这段内存空间会失去控制)

这样,tmp指向了具体的内存空间在function函数中,对 *exp进行赋值等操作是直接会改变*tmp嘚值(也就是tmp_value的值)但是如果改变了exp指向的内存空间,然后再对exp进行猛操作便不会影响tmp,但是这样会使得程序不受控制是不安全的。

以上是笔者自己的体会如有错误,希望指出共同学习进步。

}

我要回帖

更多关于 null在c语言中 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信