There is often confusion about what the difference is between arrays and pointers. Arrays are pointers that are not allowed to move. That is, arrays are merely locations in memory. Pointers are also merely locations in memory. The difference is that pointers can be retargeted to be different locations in memory depending on the circumstance. Arrays are required to stay in the same location at all times. In addition, strings are merely arrays of characters that end with a '\0'. What does this mean for us? You might think that the syntax is different between arrays and pointers, but it isn't. But you can actually use the array syntax for pointers. Look at this example: We can use array syntax: int printCharsInString(char *s) { int index = 0; while(s[index] != '\0') { printf("%d: %c\n",index,s[index]); index++; } } Or we can use pointer syntax: int printCharsInString(char *s) { int index = 0; while(*(s+index) != '\0') { printf("%d: %c\n",index,*(s+index)); index++; } } Or we can use pointer arithmetic (not required prior to or during this class): int printCharsInString(char *s) { while(*s != '\0') { printf("%d: %c\n",index,*s); s++; } }