Re: good program
小野@名古屋大学 です.
<bupnv1$1ei$1@caraway.media.kyoto-u.ac.jp>の記事において
kounoike@mbh.nifty.comさんは書きました。
kounoike> > # Cのポインタには大小関係なんて存在しないと思っているんです
kounoike> > # が、これは間違った見識だったでしょうか?
ポインタの大小は「アドレス空間中における相対位置」として定義され
ています.
従って, 同じ配列にある要素を指すポインタ同士の間では大小関係が確
定します:
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.
kounoike> ポインタに大小関係が存在しないとすれば,どうやってポインタを進めたり,戻した
kounoike> りする概念を規定すればいいんでしょうか。
「大小関係の存在」と「ポインタを進める/戻す」とは別問題ではないか
と. 現に C++ のイテレータでは「大小関係」はなくても「進める/戻す」
という操作が可能な例があります.
# というか, 「大小関係」があるのは random access iterator だけの
# ような.
--
名古屋大学大学院 情報科学研究科 計算機数理科学専攻
小野 孝男
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735