Краткие итоги

  1. Для представления текстовой информации в С используются символьные данные и строки.
  2. В С не определен строковый тип данных, и строка представляется как массив символов.
  3. Инициализировать строку можно как массив символов.
  4. Признаком конца строки является нулевой символ.
  5. Обратиться к элементу строки можно по индексу, который соответствует порядковому номеру элемента.
  6. Нумерация элементов строки начинается с нуля. Размер строки определяется количеством входящих в нее символов.
  7. В С предусмотрены различные способы ввода и вывода одиночных символов и строк: с помощью стандартных функций, с помощью потокового или форматированного ввода/вывода. При считывании строки с клавиатуры признак конца строки добавляется автоматически.
  8. Каждому символу однозначно соответствует его внутренний код.
  9. Для работы со строками в языке С предусмотрены стандартные функции, прототипы которых включены в стандартные библиотеки stdlib.h и string.h.
  10. При обращении к функциям для работы со строками следует учитывать, что изменение значений элементов строк сохраняются после завершения работы функции.
  11. Перед использованием строки в программном коде ее необходимо проинициализировать. Неинициализированные строки могут привести к некорректной работе программы.
  12. В некоторых стандартных функциях по работе со строками следует проводить контроль длин параметров.
  13. Результат работы некоторых функций требует принудительного добавления к строке символа конца строки.
  14. Значения элементов строк зависят от регистра.
  15. Изменение регистра символов кириллицы в программе может выполняться некорректно.
  16. В силу специфики представления строк в виде символьного массива сами строки, строковые константы, заключенные в кавычки, и указатели на строки обрабатываются эквивалентно.
  17. Строки передаются в функции в качестве параметров как массивы символов или как указатели типа char.
  18. Обращение к конкретному элементу строки можно осуществить посредством адресации индексированного имени строки.
  19. При формировании строки без использования стандартных функций требуется дописывать символ конца строки.
  20. С помощью указателей на константы можно защитить строку от изменений.
  21. Копирование строк с помощью указателей осуществляется через объявление нового указателя, адресующего область памяти, занимаемую строкой или подстрокой.

Контрольные вопросы

  1. Почему в С не выполняется операция прямого присваивания значения строке?
  2. Почему символ и строка, состоящая из одного символа, занимают разный объем памяти?
  3. Почему в функции scanf("%s", string); не указывается обращение к переменной по адресу?
  4. Допустима ли операция сравнения над символами? Если да, то каким образом определены отношения "больше" и "меньше"?
  5. Какая из функций, gets или puts, заносит в поток управляющий символ '\n' и с какой целью?
  6. Можно ли выполнить присваивание символьной переменной числового значения? Почему?
  7. В чем различия результатов вывода символьной переменной со спецификаторами %d и %c?
  8. Что будет являться результатом работы функции побайтового копирования строк, если длина строки-источника превосходит допустимый размер строки-приемника?
  9. Что будет являться результатом работы функции побайтового копирования строк, если длина строки-источника меньше размера строки-приемника?
  10. Почему при сравнении строк важен регистр символов?
  11. Как сравниваются строки разной длины?
  12. Какие возможны последствия при обращении к неинициализированной строке?
  13. Почему функция изменения регистра символов строки может некорректно работать с кириллицей?
  14. Что будет являться результатом работы функции побайтового копирования строк, если длина строки-источника превосходит допустимый размер строки-приемника?
  15. Что будет являться результатом работы функции побайтового копирования строк, если длина строки-источника меньше размера строки-приемника?
  16. Почему при сравнении строк важен регистр символов?
  17. Как сравниваются строки разной длины?
  18. Какие возможны последствия при обращении к неинициализированной строке?
  19. Почему функция изменения регистра символов строки может некорректно работать с кириллицей?
  20. Почему обращения к строке через ее имя и через указатель эквивалентны?
  21. Почему в качестве параметра функции передается адрес строки, а не сама строка символов?
  22. Возможно ли применение операций инкремента и декремента к указателю на строку? Если да, то что будет адресовать полученный указатель?
  23. Почему при формировании строки без использования стандартных функций необходимо дописывать символ конца строки? Почему этого не требуется при считывании строк с клавиатуры?
  24. Какие возможны ошибки в программе при некорректной работе со строками?
  25. Для защиты строки от изменения объявляется указатель на константу или указатель-константа? Почему?

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: