C++ never passes arrays to a function. Instead, the argument is implicitly converted to a pointer that contains the address of the first array element. For example:
void f(char s);
f(buff); // buff is quietly converted to '&buff'
Because of this implicit conversion, you may access elements of an array in two forms:
*(s+n) = 'a'; // pointer notation
s[n] = 'a' // array notation
In fact, even if s is a real pointer, you may use the  notation:
char *s=new char;