История изменений
Исправление vbr, (текущая версия) :
Это значти, что для того, чтобы работать в С со строками и не облажаться (мало кому удаётся), нужно постоянно держать в памяти и никогда не забывать, что строка это на самом деле указатель на терминированную нулевым байтом область в памяти.
Ну и ладно. Для работы со связными списками нужно ровно то же самое, например. По-мне это вообще больше вопрос дизайна хорошего API для работы со строками. Тот API, который есть в стандартной библиотеке C - не выдерживает никакой критики. Но есть и библиотеки получше. Со строками, как с массивами, вообще работать не вполне корректно, если мы говорим про тот же юникод. Там даже итерация по кодовым точкам будет в библиотечном коде скорей всего.
Тогда как в высокоуровневом языке строка — это некая абстрактная сущность, определяемая через набор допустимых операций по работе со строками.
Ну вот Java и Kotlin значит выпадают из списка высокоуровневых языков. Там строка это не абстрактная сущность, это вполне конкретный библиотечный класс. Да, там есть «сахар» в виде строковых литералов, неявно создающих объекты этого класса, но это и в C есть по сути. И если хорошенько упороться, можно даже этот класс подменить на что-нибудь другое.
Исправление vbr, :
Это значти, что для того, чтобы работать в С со строками и не облажаться (мало кому удаётся), нужно постоянно держать в памяти и никогда не забывать, что строка это на самом деле указатель на терминированную нулевым байтом область в памяти.
Ну и ладно. Для работы со связными списками нужно ровно то же самое, например. По-мне это вообще больше вопрос дизайна хорошего API для работы со строками. Тот API, который есть в стандартной библиотеке C - не выдерживает никакой критики. Но есть и библиотеки получше.
Тогда как в высокоуровневом языке строка — это некая абстрактная сущность, определяемая через набор допустимых операций по работе со строками.
Ну вот Java и Kotlin значит выпадают из списка высокоуровневых языков. Там строка это не абстрактная сущность, это вполне конкретный библиотечный класс. Да, там есть «сахар» в виде строковых литералов, неявно создающих объекты этого класса, но это и в C есть по сути. И если хорошенько упороться, можно даже этот класс подменить на что-нибудь другое.
Исходная версия vbr, :
Это значти, что для того, чтобы работать в С со строками и не облажаться (мало кому удаётся), нужно постоянно держать в памяти и никогда не забывать, что строка это на самом деле указатель на терминированную нулевым байтом область в памяти.
Ну и ладно. Для работы со связными списками нужно ровно то же самое, например. По-мне это вообще больше вопрос дизайна хорошего API для работы со строками. Тот API, который есть в стандартной библиотеке C - не выдерживает никакой критики. Но есть и библиотеки получше.
Тогда как в высокоуровневом языке строка — это некая абстрактная сущность, определяемая через набор допустимых операций по работе со строками.
Ну вот Java и Kotlin значит выпадают из списка высокоуровневых языков. Там строка это не абстрактная сущность, это вполне конкретный библиотечный класс. И если хорошенько упороться, можно даже его подменить на что-нибудь другое.