int ia[5] = {1,2,3,4,5};
for (int *p = ia; p < ia + 5; p++)
printf("%d", *p);
p = ia,數組名退化為首元素地址 &ia[0],p 指向 1。p < ia + 5。ia + 5 是數組尾後地址 &ia[5](不存在的第 6 個元素地址)。指針比較合法,只要指向同一數組內或尾後。*p 解引用輸出當前元素值。p++ 移動到下一個 int 位置(地址 + sizeof(int))。依次指向 2、3、4、5。p == ia+5 條件為假,循環結束。ia+5 合法且可比較,但不可解引用。