提升代码灵活性通过引用传递数组传引用和传指针的区别,函数可以直接修改数组内容传引用和传指针的区别,而无需返回修改后的数组减少编译器负担使用数组引用可以避免编译器在处理数组大小时的检查,降低编译时间增强代码扩展性数组引用使得函数能够处理不同大小的数组,提高了代码的通用性和可维护性数组引用与指针的区别指针传递的是数组首。
值传递和引用传递是两种不同的参数传递方式,C++支持引用传递,而CJavaPython则主要采用值传递在C和C++中,当调用函数时,实际上是将实参的值对于普通变量或地址对于指针和数组复制到函数的参数中这被称为值传递,意味着函数内部对参数的修改不会影响到原始变量例如,即使在test函数中。
数值,获取不了传参时那个变量的地址比如 int a = 5int *p = a 1 a testa在test函数中,无法获取a这个变量的地址,就是1,仅仅得到了5这个值 2 指针传递 int testint *p此处传递的是,一个整形变量的内存地址,其实也是一个int数值,内存地址使用int型变量。
区别对形参的影响不同 1在传值中函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的变量上2传址中压栈的是指针变量的副本,当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
那么关键问题就是“ 传指针 和 传指针引用 的区别” 本质上没有区别, 还是在例1的基础上加上以下代码 函数1void fun1int *p这里写*p就是说这个形参值接受一个int类型变量的地址 函数2void fun2int **p int q = 3 下面我们用指针传递 调用这个fun1函数 void fun1b 调用。
通过引用隐藏了指针参数的事实暗地里引用还是通过指针来实现的程序里不再出现*号,现在参数和定义在函数里的变量,具有一样的地位,一样的涵义直接赋值就可以改变参数,直接引用就可以使用参数的值,和在函数内部定义的变量用法一致了不像指针要通过*才行,调用时和值传递没有什么不同不再。
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。
发表评论