Экземпляр класса c ++ - PullRequest
0 голосов
/ 05 июля 2011

В приведенном ниже коде, что содержит "a" и "& a"?

class list{
};
int main(){
    list *a= new list();
    cout<<"\n Values:a="<<a<<" & &a="<<&a<<endl;
    return 0;
}

Ответы [ 6 ]

5 голосов
/ 05 июля 2011

a - указатель на объект типа list.

&a - адрес указателя a.

2 голосов
/ 05 июля 2011

a - указатель на список объектов, который размещен в куче.в основном a содержит адрес (указатель хранит адрес, если вы знаете).И &a ничего не содержит. То, что вы делаете, фактически берет адрес этого указателя и печатает его.

2 голосов
/ 05 июля 2011

Запись & слева в переменную дает вам адрес этой переменной.По сути, это то же самое, что указатель на зелье памяти, эта переменная хранится в.

Поскольку a уже является указателем, &a является указателем на указатель.

Таким образом, в вашем примере a содержит адрес памяти list в виде числового значения.&a также является числовым значением, которое содержит адрес памяти, в котором хранится указатель a.

2 голосов
/ 05 июля 2011

a - указатель на объект list (обычно размещается в бесплатном хранилище).Содержимое a является изменяемым.

&a - это адрес a (где a находится в макете памяти).&a не подлежит изменению.

1 голос
/ 05 июля 2011

a - указатель на объект списка типов, динамически размещаемый в freestore (куче)
&a - адрес указателя.

1 голос
/ 05 июля 2011

a содержит указатель на объект, который вы new редактируете, а &a ничего не содержит, поскольку это не объект (lvalue, на языке C ++), а просто выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...