The difference is relatively straight forward. When you declare a pointer, space is allocated to hold an address of the specified type. When an array is declared the same thing happens, EXCEPT this time in addition to the variable allocated to hold the address, memory is allocated to hold the array itself. So if you declare: