There must be another question answering this, anyhow (for the short space allowed in a comment): `pointer[i]` is the same than `*(pointer + i)` which is the same than `*(i + pointer)` which is the same than `i[pointer]`.
– peppeApr 09 '17 at 13:20
`ac[av]` is equivalent to `av[ac]`. Since `ac` (or `argc`) is the number of arguments passed in `av` array, you'll always get out-of-bounds access which is _undefined behavior_.
However, it is likely that first pointer past `av` (again, it should be called `argv`) is null pointer, comparison returns true value which is coded as `1`.
– myautApr 09 '17 at 13:20