c语言传值和传地址的区别,C语言传值和传地址的区别

1,C语言传值和传地址的区别严格上讲,c语言只有传值这一种 。C++的传引用才算传地址 。这个问题很早之前网上就讨论过了 , 很多书上有写传地址,不过是传指针而已 , 本质上还是传值 。
2 , C 语言传址调用和传值调用有什么区别传值调用,就是函数传递的参数只是值传递,实参把值传递给形参,形参运算后在把值返回 。函数中改变的值是不能影响到外界的 。传递一个参数a通过值传递,只是传递了a的值,比如你把形参的名字也称作a,并且在函数内部改变a的值,函数外边a是不变的 , 因为只传递,只是把值复制了一份给形参而已 , 形参只在函数内部起作用 。按地址调用 , 就是把一个变量的地址做为参数 , 这样在函数内部通过解引用可以直接修改这个变量的值,这个变量的值会被改变了 。【c语言传值和传地址的区别,C语言传值和传地址的区别】
3,怎么区分C语言里的按值传递与按址传递有两种方法可以实现地址传递一个是指针,另一个是引用,就是在变量前加&.值传递就是普通用变量名就可以了 。都是值传递,真正的引用传递是出现在c#中,当你传指针的时候,实际上你传的是指针所指向的地址值,也就是把地址值传过去,但是这个地址值也是通过值传递过去的,即函数内的指针指向的地址值是原来的地址值的一个拷贝,但是由于地址值相同,所以你在函数内对该指针进行解指针并进行修改 , 你也修改了外部的那个指针的值(注意 , 修改的不是地址值)*p = 30;那么主函数内的值也变成了30,因为是对同一个地址存放的数据进行了操作按地址传递形参是要用到指针的按地址传递形参才能改变实参 。可以改变两个数的大小 。我很清楚的记得,老师(教授)说"函数之间的传递都是值的传递",而且他特别的强调了"指针的传递,实际上也是值的传递,它只是把地址的值传递了过去".呵呵~~ 在实际用当中,我也体会到了,也很好的理解了他的这句话哦~~

    推荐阅读