строки

Вроде бы, что сложного в конструкции:

char * str = "blablabla";

Объявили переменную str и присвоили ей значение из последовательности символов.

Также к примеру происходит и с переменными других типов:

int ii = 123;

Но все не так просто. В случае с int мы точно знаем размер значения (int 32 bytes).

А в случае с char * мы имеем дело с указателем на последовательность байт, и количество байт всегда разное (почти всегда).

Конец последовательности байт это скрытый байт 0, он добавляется всегда в конец цепочки байт.

Таким образом мы имеем дело с объектами с разным размером в памяти. И это важная особенность.

Поэтому строки ИМХО к простым типам данных не относятся.

К тому же строка это последовательность байт в определенной формате ( кодировке ): cp866, utf-8, win-1251,...