在C++中指针和引用传值区别

原创 2017年06月05日 13:49:05

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

CSDN视频网址:http://edu.csdn.net/lecturer/144

在C ++中,我们可以通过指针或引用将参数传递给函数 在这两种情况下,我们可以得到相同的结果。 所以下列问题是不可避免的: 什么时候是优先于另一个?

Passing by Pointer

#include <iostream>
using namespace std;
 
void swap(int* x, int* y)
{
    int z = *x;
    *x = *y;
    *y = z;
}
 
int main()
{
    int a = 45, b = 35;
    cout << "Before Swap\n";
    cout << "a = " << a << " b = " << b << "\n";
 
    swap(&a, &b);
 
    cout << "After Swap with pass by pointer\n";
    cout << "a = " << a << " b = " << b << "\n";
}

Output:

Before Swap
a = 45 b = 35
After Swap with pass by pointer
a = 35 b = 45


Passing by Reference


#include <iostream>
using namespace std;
void swap(int& x, int& y)
{
    int z = x;
    x = y;
    y = z;
}
 
int main()
{
    int a = 45, b = 35;
    cout << "Before Swap\n";
    cout << "a = " << a << " b = " << b << "\n";
 
    swap(a, b);
 
    cout << "After Swap with pass by reference\n";
    cout << "a = " << a << " b = " << b << "\n";
}

Output:

Before Swap
a = 45 b = 35
After Swap with pass by reference
a = 35 b = 45

引用变量和指针变量的区别

引用通常使用指针来实现 引用是相同的对象,只是使用不同的名称引用必须引用一个对象。 由于引用不能为NULL,所以它们更安全。
1、指针可以重新分配,而引用不能,只能在初始化时分配。
        2、指针可以直接分配NULL,而引用不能。
3、指针可以遍历数组,我们可以使用++去指向下一个项。
        4、指针是保存内存地址的变量, 引用具有与引用的项相同的内存地址。

5、指向类/ 结构体的指针使用' - >'(箭头运算符)来访问它的成员,而引用使用'.'(点运算符)。








版权声明:本文为博主原创文章,未经博主允许不得转载。

C/C++的值传递,指针传值和引用传值的区别

首先让我们来看下面几个代码:
  • zhushh
  • zhushh
  • 2014年11月03日 12:07
  • 2030

传值,传指针和传引用区别和联系

C++写了很多年,有一天,写着写着代码。竟然自己发现对传值,传指针,传引用这个每天都在用的传递方式的区别还不是很清楚。以为自己懂了,其实还理解得还不够深入,基础还需要花时间琢磨。今天参考了很多篇博客和...
  • zx3517288
  • zx3517288
  • 2016年11月27日 12:15
  • 802

C++中指针和引用的区别(超详细)

指针和引用主要有以下区别: 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。 引用初始化后不能被改变,指针可以改变所指的对象。 不存在指向空值的...
  • weikangc
  • weikangc
  • 2015年11月10日 17:40
  • 964

C++引用详解及与指针异同点

一、引用详解 引用:就是对某一变量(或对象)取一个别名,对变量的引用 的操作与对变量本身直接操作完全一样。 引用的声明:类型标识符 &引用名=目标变量名;   如下:定义变量a的引用aa,即别名。  ...
  • ljheee
  • ljheee
  • 2016年08月12日 11:22
  • 1138

传值和传引用、传指针的区别

c语言中所有传递给函数的参数
  • a15994269853
  • a15994269853
  • 2014年04月18日 09:50
  • 10818

java中的引用和C++中的指针的区别

1.类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。2.所占内存: 引用声明时没有实...
  • b271737818
  • b271737818
  • 2009年02月24日 13:30
  • 8970

C++传值调用与引用调用的区别

简单来说,传值调用就是指当一个函数被调用时,C++根据实参和形参的对应关系将实参的值一一复制给形参,即实参的值单向传递给形参。函数本身不对实参进行任何操作,即使形参的值在函数中改变,实参的值也不会受到...
  • laihengzhi
  • laihengzhi
  • 2014年03月15日 23:43
  • 1074

C++小知识之指针和引用的区别

温故而知新,指针和引用的概念,大学时都已熟知,实际用的时候往往又有些疑惑,故深入探究一下。 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向...
  • xdrt81y
  • xdrt81y
  • 2014年01月08日 17:24
  • 9318

java的引用和C++的指针有什么区别

大多数的C++程序员转学java的时候,都有这样一个疑问,java的引用就是C++的指针吗。其实不完全对,他们之间既有前四外绿的联系, 也有很大的区别。 java的引用和C++的指针都是指向一块内存...
  • fanfan199312
  • fanfan199312
  • 2015年07月10日 22:04
  • 1132

C++传值&传指针&传引用

我同学看见我的电脑都说我浏览器开太多了,忍不住要帮我关掉,但是宝宝一个窗口是写博客,一个窗口写javascript,一个窗口写算法,虽然每个都开了十几个,但是条理很清晰啊,没毛病!C++传参数的三种方...
  • tingyugetc11
  • tingyugetc11
  • 2017年03月23日 14:27
  • 465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C++中指针和引用传值区别
举报原因:
原因补充:

(最多只允许输入30个字)