按地址(指针)调用和按引用调用之间的区别

时间:2015-04-19 08:54:06

标签: c++

你能告诉我1和2之间的区别吗? 这本书说第一个是地址呼叫(指针),第二个是参考呼叫,但我并没有完全得到这两个来源。 请向我解释这些消息来源,提前谢谢。

1

#include <iostream>
using namespace std;

void absolute(int *a);
void main()
{
    int a = -10;
    cout << "Value a before calling the main function = " << a << endl;
    absolute(&a);
    cout << "Value a after calling the main function = " << a << endl;
}
void absolute(int *a)
{
    if (*a < 0)
        *a = -*a;
}

2

#include <iostream>
using namespace std;

void absolute(int &a);
void main()
{
    int a = -10;
    cout << "Value a before calling the main function" << a << endl;
    absolute(a);
    cout << "Value a after calling the main function" << a << endl;
}
void absolute(int &a)
{
    if (a < 0)
        a = -a;
}

1 个答案:

答案 0 :(得分:0)

就CPU级别的情况而言,指针和引用完全相同。不同之处在于编译器,它不会让你对引用进行删除(并且键入的次数较少)

所以在你的代码中,两个函数都做同样的事情。