指向数组以后第一个位置的指针也是合法的,这句话有什么用呀.

指向数组之后第一个位置的指针也是合法的,这句话有什么用呀...
指向数组之后第一个位置的指针也是合法的,这句话有什么用呀...

int arr[ 2 ] = {1, 2}; 
int i = 0;

那我用 
  while(arr < arr + 2)
  {
  printf("%d\n", arr[ i++ ]);
  } 
不也是对的吗

------解决方案--------------------
这里有个概念叫one past the last,在C和C++的STL中被大量应用。
应用这个概念,所有的range都被表示成[begin, end)这样的左闭右开区间。
所以的C/C++的函数(跟range)有关的都是以这样的区间去设计的。