2016-04-27 11 views
1

どのようにしてC++で配列にアクセス/ dereferenceしますか?例えば配列ポインタをC++で

私はこのコード

int num[] = {0,1,2,3}; 
int *p = # 

を持っている場合、I pはNUM配列の最初の要素を指すと思いましたか?

何らかの理由で、コンパイラエラーが発生します。

私は例えば、指している値にアクセスし、変更する

をポインタと増分を使用したい、pはint配列num個の最初の変数のアドレスを取得し、私は、pをインクリメントした場合、私が取得int配列numの2番目の変数のアドレス。

ヒントを教えてください。

+1

&numの型はint **です。 – kjpus

+1

@kjpus:実際には、 '&num'の型は' int(*)[4] 'です。 'sizeof'と'& '演算子は配列型に対して特別な意味を持ちます。 – dreamlax

+1

@dreamlax実際には、すべてのタイプで同じ意味を持ちます。他のコンテキストでは特別な意味を持つ配列型です –

答えて

8

私はpがnum配列の最初の要素を指していると考えましたか?

int *p = #&numがintへのポインタではないので、間違っている、すなわちint*、実際にintの配列、即ちint (*) [4]へのポインタです。

最初の要素へのポインタを取得するには、代わりにint *p = num;またはint *p = &num[0];を使用します。