アプリ版:「スタンプのみでお礼する」機能のリリースについて

配列のアドレス部

a[●]

この●の所には負の値は入れることは可能でしょうか。

A 回答 (4件)

純粋な配列ではできないと思いますが、ポインターを配列であるかのごとく扱う際には


できるケースがあります。例えば、

int x[5] = { 0, 1, 2, 3, 4 };
int *a = x[2];

というコードを書いたとき、

a[-2] は 0
a[-1] は 1
a[0] は 2
a[1] は 3
a[2] は 4

となり、配列(であるかのごとく扱っている)aの添字に負数を書くことができます。
    • good
    • 2
この回答へのお礼

皆様、回答ありがとうございます。
大変わかりやすく、勉強になります。
ベストアンサーは悩んだのですが、
負の数を代入できる方法を一番教えて下さった方にします。
ありがとうございました。

お礼日時:2011/09/16 11:26

a[n] は *(a+n) と等価なので、 言語仕様としては問題ありません。


その領域にアクセスすることが可能か、意味があるのか、については別の問題です。

int a[10] ;などとして確保した場合は、a[-10]は確保した領域の外になるので、動作する保証はありません。
    • good
    • 0

可能です。

例えば、

int A[10];
int * P = &A[2];

とすると、P[-2] は A[0] と同値になります。
    • good
    • 0

「添え字」というのですが……



一般的に負数(マイナス)指定にはなりません。
「確保した領域の外」になるのが普通ですから。

指定自体は可能ですが、アクセス禁止などで吹っ飛ぶ可能性もあります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!