C语言中参数的传递全部是值的传递!

一定要记住C语言中,其实什么地址传递,都是值的传递
C中参数的传递全部是值的传递
只是有时候传的是地址,而地址本质上其实也是值

而如果实参传的是一个变量的地址,接收就用一级指针接收呀
因为地址这种类型只能用指针类型进行接收

如果我传递了一个**r的f(r)
说明传过去的只是r这个变量存储的地址
而不是他自己本身,所以r这个变量存储的应该是一个一级指针的地址
这时候我只需要使用一个二级指针进行接收就可以了

其实在传参的时候只需要分清楚
他传递的值到底代表的是什么意思就可以了
有的代表一个数字,有的代表地址
你用形参就好像(相当于一个局部变量)保存了一个数字,那你肯定影响不到主函数的值呀
但是如果你保存的是一个地址,你就可以打开这个内存空间,从而修改其中的值,影响主函数中变量的值

说到底,其实根本就没有是什么主副函数之分,无法影响主函数之类的,主函数只不过是从他开始运行而已。
在任何地方,想要改变主函数中变量的值,其实就是看你能不能拿到他空间的地址,只要拿到了他空间的地址,在任何地方你都可以那个指针变量来对他进行接收,然后随心所欲的修改。

所以说,以后在接收到一个参数时,只需要认真的分析下,他代表的是个普通数值,还是代表哪一个空间的地址,其实也是一个特殊数值

传L,代表L内存储的值,传&L代表他自身的地址数值呀!!!(千万注意)

但是为什么int* a 的&a 不能用int* b来接收呢
也就是不可以用一级指针来接收一级指针的地址
非要用二级指针来指向一级指针的地址呢
最最最最最主要的原因是访问的深度不够
如果一级指针真的可以接收一级指针的地址
那么他始终b代表的都是一级指针的地址
而无法更近一步的访问
a所指向的变量了
所以一定要用二级变量来接收他的地址
这样就可以层层递进来访问各层的数据了

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43665244/article/details/108853602
今日推荐