为什么address-of运算符会创建引用?

时间:2018-03-20 17:46:31

标签: c++ pointers c++14

请考虑以下代码:

#include <iostream>
using namespace std;
void test0(const int &a){
  cout << "const int &a passed *ptra "<< a << endl;
}
void test1(const int &a){
  cout << "const int &a passed ptra "<< a << endl;
}
void test2(const int &a){
  cout << "const int &a passed *a "<< a << endl;
}
void test3(const int &a){
  cout << "const int &a passed a "<< a << endl;
}
void test4(int *a){
    cout << "int *a passed &a "<< *a << endl;
}
void test5(int *a){
    cout << "int *a passed a "<< a << endl;
}
void test6(int *a){
    cout << "int *a passed *a "<< a << endl;
}
int main(){
  int a = 3;
  int *ptra;
  *ptra = 3;
  test0(*ptra);
  //test1(ptra);
  //test2(*a);
  test3(a);
  test4(&a);
  //test5(a);
  //test6(*a);
  //int &b = a;
}

传递a时(int&amp; a)如何成为引用? 它本质上是创建一个int a并将其地址设置为传递给它? 对于结果引用指向a的值的地址(如果a = 3指向地址3),如果你这样通过,那么它是否更有意义:

void stuff(int &a);
int *ptr;
stuff(ptr);

a将其地址设置为传递的值(ptr指向的地址); 指针与参考之间的区别是什么?

还有什么,如果你取消注释// int&amp; b = a 该程序停止输出任何东西。为什么呢?

0 个答案:

没有答案