之前一直对指针和引用的传参抱有疑问, 今天特地测试下
1.定义的指针不能使用常量进行初始化,想要使用就必须用变量定义然后传递这个变量的引用.
2.指针测试.
如果传入的是&a, 函数以*a接收,那么
函数体内a=传入前的&a=地址
函数体内*a=传入前的a=真实值
函数体内&a=地址的地址, 相当于二级指针
3.引用测试.
如果传入的是a, 函数以&a接收,那么
函数体内a=传入前的a=真实值
函数体内&a=传入前的&a=地址
4.再补充几种容易混淆的情况.
如果传入的是p, 函数以*a接收,那么
函数体内a=传入前的p=地址
函数体内*a=传入前的*p=真实值
函数体内&a=地址的地址, 相当于二级指针
传入前的&p=地址的地址, 相当于二级指针
这和直接传入p没有区别
由此可见, 当已经定义了指针*p, 函数以指针*a接收参数时, 无法传入指针*p和引用&p
如果传入的是*p, 函数以&a接收,那么
函数体内&a=传入前的p=地址
函数体内a=传入前的*p=真实值
传入前的&p=地址的地址, 相当于二级指针
可以看出如果是函数使用引用接收, 那么传参只能传递指针
5.结构体.
1.第一种情况.
崩溃:
正确:
2.第二种情况.
错误:
正确: