C/C++ 直接传值,传引用,传指针的理解
来源:互联网 发布:ubuntu 桌面假死 编辑:程序博客网 时间:2024/06/04 00:23
从根本上来讲都是传值,只不过立场不同罢了。引用和指针传得值是地址而已。
简单的讲,如下.
void swap(int a,int b)//交换函数
{
a+=b;
b=a-b;
a=a-b;
}
这是直接传值..在此函数内部虽然交换了,但是,在主函数中,运行后.两值不交换.
因为此函数内的a,b是主函数中的一份COPY..
而
void swap(int &a,int &b)//交换函数
{
a+=b;
b=a-b;
a=a-b;
}
可以,因为,加上引用后.函数内的运算,直接作用于这两个变量本身.
void swap(int *a,int *b)//交换函数
{
*a+=*b;
*b=*a-*b;
*a=*a-*b;
}
这样,也可以,传进来的是地址.
操作直接作用于地址指向的空间,也就是它们本身.
直接传值就是传实参的副本给函数,需要时间消耗;而传引用传指针是传实参的地址给函数,
系统开销少,此外,在C中用常用指针,而在C++中常用引用.特别是在面向对象编程中.
引用传递和指针传递是不同的,虽然它们都是在被调函数栈空间上的一个局部变量,但是任何对于引用参数的处理都会通过一个间接寻址的方式操作到主调函数中的相关变量。而对于指针传递的参数,如果改变被调函数中的指针地址,它将影响不到主调函数的相关变量。如果想通过指针参数传递来改变主调函数中的相关变量,那就得使用指向指针的指针,或者指针引用。
参考:http://xinklabi.iteye.com/blog/653643
0 0
- C/C++ 直接传值,传引用,传指针的理解
- C/C++的传指针和引用
- 结构体指针(关于C语言传值的理解)
- 二级指针和指针引用函数传参(C++)
- C++“引用”的理解
- C/C++的值传递,指针传值和引用传值的区别
- 深入理解C语言的指针*和引用&
- C--我对指针和引用const之后的理解
- 深入理解C语言的指针*和引用&
- 关于C语言动态分配内存传指针的理解
- C/C++中函数的传值调用、指针调用、引用调用问题
- C 指针的理解
- C 指针的理解
- C 指针的理解
- C 指针的理解
- C 指针的理解
- C 指针的理解
- C指针的理解
- java中集合的遍历
- Hbase 介绍
- 【IOS基础知识】格式输出
- NSInvocationOperation的cancelAllOperations不会取消正在运行的operation
- JAVA EL表达式详细介绍使用手册
- C/C++ 直接传值,传引用,传指针的理解
- 17--2--5求字符串长度
- 自己做个时钟改进版-html5的canvas
- Ubuntu 12.04下安装gnome桌面
- sizeof与strlen
- mysql获取当前时间、秒数
- window7,xp通过cmd 设置ip地址与自动获取ip地址
- Android 对图像的操作
- shell