有人可以解释为什么
int main(int argc, const char * argv[]) {
while (* argv)
puts(* argv++);
return 0 ;
}
是合法的,并且
int main(int argc, const char * argv[]) {
argv += argc - 1;
while (* argv)
puts(* argv--);
return 0 ;
}
不是吗?在这两种情况下,while 循环内的 'crement 都将指向 argv 的边界之外。为什么指向一个虚构的较高索引而不是一个虚构的较低索引是合法的?
此致。