int main(){
int a[4] = { 1,2,3,4 };
int(*b)[4] = &a; //with a doesn't work
cout << a << &a << endl; //the same address is displayed
}
したがって、int(*b)[4]
は、intの配列へのポインタです。私は&a
とa
の両方で初期化しようとしました。それは最初の人とだけ働く。
配列の最初の要素の両方のアドレスではありませんか?
intの配列へのC++ポインタ
"インスタンス化"ではなく "初期化"を意味します –
ポインタには型があります。 (つまり、アドレスとタイプです)。これは 'int x;と同じ理由で動作しません。ダブル* p =&x; 'は動作しません。 –
@P。 Danielski:「配列の最初の要素のアドレス」と「配列全体のアドレス」は、どちらもメモリ上の同じポイントから始まる場合はどのように区別しますか?同様の例: 'struct S {int x; } s; '。 '&s'と'&s.x'は同じ数値アドレスです。それでは、 '&s'とは何ですか?structオブジェクト全体のアドレスまたは最初のフィールドのアドレス? – AnT