EDIT: @AD: I seriously thought so too, but I googled it first.
SECOND EDIT: @rithish: DO NOT DO THIS UNLESS YOU KNOW WHAT YOU'RE DOING!
Apparently, you can. I'd try it first on your compiler just to be sure.
Make sure it's pointed at a valid memory location that has been allocated. http://stackoverflow.com/questions/3473675/negative-array-indexes-in-c
printf("ptr[%d]:%d\t", i, ptr[i]);
(Tested in MinGW 4.7 on Windows XP x86, then GCC 4.6 in Ubuntu x64)