配列の初期化などでポインタのforループを書くことがあります。アセンブリ言語に明るい人間ならばこのように書きたがると思いますが、C/C++言語においてこの動作は未定義となりますでしょうか。主に配列の要素以外の部分をポインタが指すときの比較演算が保証されているか、という質問内容になります。よろしくお願いします。
C
1#include <stdio.h> 2 3int main() { 4 int a[5]; 5 int *pe = a + 5; 6 for (int *p = a; p < pe; ++p) *p = 0; 7 for (int *p = pe - 1; p >= a; --p) printf("%d\n", *p); 8 return 0; 9}
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 02:26
2020/07/20 11:51 編集
2020/07/20 16:37