"a"と "&a"には以下のコードが含まれていますか?C++クラスのインスタンス
class list{
};
int main(){
list *a= new list();
cout<<"\n Values:a="<<a<<" & &a="<<&a<<endl;
return 0;
}
"a"と "&a"には以下のコードが含まれていますか?C++クラスのインスタンス
class list{
};
int main(){
list *a= new list();
cout<<"\n Values:a="<<a<<" & &a="<<&a<<endl;
return 0;
}
a
は、ヒープ上に割り当てられたオブジェクトリストへのポインタです。 基本的にa
にはアドレスが含まれています(ご存知の場合は、ポインタにアドレスが格納されています)。 そして&a
には何も含まれていません。あなたがやっていることは、実際にそのポインタのアドレスを取得して印刷していることです。
a
タイプlist
のオブジェクトへのポインタです。
&a
は、ポインタa
のアドレスです。
a
はオブジェクトあなたnew
EDへのポインタが含まれており、それは(C++用語では、左辺値)オブジェクトではありませんので、&a
は、単に表現を何も含まれていません。
a
動的freestore(ヒープ)に割り当てられたタイプのリストのオブジェクト
&a
がポインタのアドレスへのポインタです。
a
は、list
オブジェクト(通常はフリーストアに割り当てられています)へのポインタです。 a
の内容は変更可能です。
&a
は、a
のアドレスです(ここでは、a
はメモリレイアウトにあります)。 &a
は変更できません。
&
を変数に書き込むと、この変数のアドレスが得られます。これは本質的にメモリのポイントへのポインタと同じで、この変数は格納されます。
a
はすでにポインタですので、&a
はポインタへのポインタです。
したがって、a
には、数値としてlist
というメモリアドレスが含まれています。 &a
は数値でもあり、メモリアドレスを含み、ポインタa
が格納されます。