Yes, you are right - a it's a pointer to a null terminated array of characters.
The const part just means that you can't modify it via the pointer
- not that it can't be modified. You can either pass a genuine cost value:
const char * c = "hi!";
Or you can pass it a non-const array:
const char * c;
c = data;
and either will work. The important thing is that once it is assigned to the const pointer, you can't change it via that pointer - so you can safely pass a genuinely constant string and it'll work fine.