ユーザー定義型Aとポインターが与えられた場合、とA* aの違いは何ですか?*aa[0]
(*(a+0)/a[0]は同等であると定義されていますが、 *a/の場合は同じではありませんa[0]。微妙な違いにより、特定の状況でコンパイルエラーが発生する可能性があります。)
ユーザー定義型Aとポインターが与えられた場合、とA* aの違いは何ですか?*aa[0]
(*(a+0)/a[0]は同等であると定義されていますが、 *a/の場合は同じではありませんa[0]。微妙な違いにより、特定の状況でコンパイルエラーが発生する可能性があります。)
Aが不完全なタイプの場合、この例で*aは機能しますが、a[0]機能しません。
struct A;
void foo(A& r)
{
}
void bar(A* a)
{
foo(*a);
foo(a[0]); // error: invalid use of incomplete type ‘struct A’
}
これa[0]は、と同等であるためです*(a+0)が、ポインタ演算ではサイズを知る必要があるため、不完全な型(ゼロでもない)のオブジェクトへのポインタに何かを追加することはできません。