int&p = n;有什么区别? int * q =&n ;?

时间:2020-11-12 08:27:45

标签: c++ pointers

1)int&p = n和int * q =&n在此代码中有什么不同,它们执行相同的操作。 2)正确执行什么操作(可能会返回addres变量或其他内容?)

    void foo(int &p){
        p++;
    }
    int main(){
    
        int n = 5;
    
    
        foo(n);
    
        int &p= n;
        int *q = &n;
    
        cout << *q;
        cout << p;
}

2 个答案:

答案 0 :(得分:1)

int&p = n;

p是一个(非常量)int 引用,它引用类型为int的对象,并具有关联的名称{{1} }。有关详细信息,请参见Reference declaration

int * q =&n;

n是指向(非常量)q对象的(非常量)指针,其中使用了变量int address 初始化指针;特别是通过使用address-of operator &n)。 Pointer declaration了解详情。

答案 1 :(得分:0)

1)int&p = n和int * q =&n

有什么区别

import { Storage } from '@ionic/storage'; constructor(private storage: Storage) { } this.storage.get('firstOpening').then((firstOpening) => { if (!firstOpening) { //Open onboarding modal or navigate to page } }); 是对对象的左值引用,this.storage.set("firstOpening", true); 是对对象的指针。

引用和指针之间的一些区别:

  • 不能引用其他对象。指针可以重新分配以指向另一个对象。
  • 指针可以指向null。引用不能引用null。
  • 通过引用的间接引用是隐式的,而通过指针的间接引用则需要使用间接引用运算符。

2)确切地做什么(也许会返回addres变量?)

在复合类型名称中,p表示该类型是引用。在表达式中,一元运算符q是运算符的地址。