In C this standardized string interface type happens to the poiinter to a zero-terminated bag of bytes, not exactly perfect in hindsight, but as long as everybody agrees to that standard, the actual code working on strings can be replaced with another implementation just fine.
E.g. a minimal stdlib should mostly be concerned about standardized interface types, not about the implementation behind those types.