やっぱりちょっと疑問が残るので、もう少しお願いします。

takao@hirata.nuee.nagoya-u.ac.jp (Takao Ono) writes:

> 従って, 同じ配列にある要素を指すポインタ同士の間では大小関係が確
> 定します:
> int a[N];
> int i, j;
> int *p = &a[i], *q = &a[j];
> のとき 0 ≦ i < j ≦ N ならば p < q.
> 
> あと, 1個の構造体オブジェクトにおける, 同じ型を持つ異なるメンバー
> を指すポインタ同士の大小関係も確定します:
> struct A {
>     int x;
>     int y;
> } a;
> int *p = &a.x, *q = &x.y;
> ならば p < q.

ほんとに配列だからとか構造体だからという制約なんでしょうか?

メモリ上に連続したアドレス空間が割当られるようなものに関して
は、たまたま大小関係が成立するということではないのでしょうか。

例えばIA32マシンで4GB以上の配列を作ったとしても大小関係は成
立することが保証されるのでしょうか?
# 実際に配列が作れるかどうかは別として。

また、配列だからとかって制約だとすると、

char *s, *e;
s = (char*)malloc(1000);
e = s + 999;

とした場合は、s < e は成り立たないのでしょうか?
-- 
01/23 12:33頃
水戸