I think it's worth pointing out that the name of an array is treated as a pointer to the first element in the array. So let's say for example you have an array of chars defined like this:
Code:
char arr[5] = {'w', 'o', 'r', 'd', '\0'};
...the name "arr" by itself, without the brackets, is treated as a pointer to the first element in that array, in this case a 'w'. Dereferencing the name "arr," as in "*arr", gives you the 'w'. So you can say that the name "arr" is a pointer-to-char.
You can access the other elements in the array by adding to the pointer "arr" like so:
Code:
*(arr + 2);
//will give you the 'r'....
Of course saying *(arr + 2) is just another way of saying "arr[2]" and so you can see that since the name "arr" refers to a pointer to the first element of the array, the pointer notation and the array notation are equivalent to each other. It's up to you which one you use.
In your case, you're passing a pointer-to-char, "*indicator," into a function. It points to a char which is the first char in a string. Since you now have access to that pointer in your function, you can use it to access the other characters in the string in either of the two ways mentioned about, i.e. as "*(indicator + n)" or as "indicator[n]". They are both the same.
Sorry for repeating what's basically already been said but I thought he might find it helpful to hear it from one beginner to another. Plus, I think I'm coming down with swine flu and I've just taken a healthy swig of NyQuil and my head is swimming, so in all likelihood I'll look at this tomorrow morning and think "huh??"