Строки (описание и инициализация строк). Приведите примеры. Для представления текстовой информации в языке С используются символы (константы), символьные переменные и строки (строковые константы), для которых в языке С не введено отдельного типа в отличие от некоторых других языков программирования. Строковая константа определяется как последовательность символов, заключенных в двойные кавычки, например: “Строка”. Среди символов могут быть эскейп-последовательности, т. е. сочетания знаков, соответствующие неизображаемым символам, или символам, задаваемым их внутренними кодами. Например: “\nСтрока с использованием управляющих кодов. \n”. Все символы строки размещаются в памяти подряд, и каждый символ (в том числе представленный эскейп-последовательностями) занимает ровно один байт. В конце записи строковой константы компилятор помещает символ ‘\0’. Строка – это массив символов, т. е. она всегда имеет тип char[]. Количество элементов в таком массиве на один больше, чем в изображении соответствующей строковой константы. Присвоить значение массиву символов с помощью обычного оператора присваивания нельзя. Поместить строку в массив можно при инициализации. Таким образом, описание строки может быть выполнено одним из следующих способов: char string1[50]; – где 50 – максимальное допустимое количество символов в строке. char string2[]={‘С’, ‘т’, ‘р’, ‘о’, ‘к’, ‘а’, ‘1’, ‘.’, ‘\0’}; – помещение строки в массив при инициализации. char string3[] =”Еще один пример строки, описанной при инициализации”; Кроме перечисленных способов поместить строку в массив можно с помощью функций ввода. В функциях printf(), scanf() для символьных строк используется спецификация преобразования %s. char str[]=”String one”; printf(“%s”,str); Работа с символьными строками – это работа с массивами типа char. При этом следует помнить об обязательном присутствии в конце строки символа ‘\0’. Кроме описанных выше, существует еще один способ описания строковых констант. Такой способ возможен только для массивов символов и выглядит следующим образом: char *str; char *str1=”Строка, описанная при помощи указателя.”; Использование указателей, а не массивов фиксированной длины целесообразно, когда предложения или слова должны быть разной длины. Пример: #include<stdio.h> void main (){ char *str[] ={“Обработка”, “предложений”, “или”, “слов”, “каждое”, “из”, “которых”, “представлено”, “в”, “виде”, “строки”, “.”}; int i,n; n=sizeof(str)/sizeof(str[0]); for (i=0;i<n;i++) printf(“%s”,str[i]);} Строки в качестве параметров функций. Смотреть ЛАБ 6 Строки и указатели. Для представления текстовой информации в языке С используются символы (константы), символьные переменные и строки (строковые константы), для которых в языке С не введено отдельного типа в отличие от некоторых других языков программирования. Строка – это массив символов, т. е. она всегда имеет тип char[]. Количество элементов в таком массиве на один больше, чем в изображении соответствующей строковой константы. Присвоить значение массиву символов с помощью обычного оператора присваивания нельзя. Поместить строку в массив можно при инициализации. Таким образом, описание строки может быть выполнено одним из следующих способов: char string1[50]; – где 50 – максимальное допустимое количество символов в строке. char string2[]={‘С’, ‘т’, ‘р’, ‘о’, ‘к’, ‘а’, ‘1’, ‘.’, ‘\0’}; – помещение строки в массив при инициализации. char string3[] =”Еще один пример строки, описанной при инициализации”; Кроме перечисленных способов поместить строку в массив можно с помощью функций ввода. В функциях printf(), scanf() для символьных строк используется спецификация преобразования %s. char str[]=”String one”; printf(“%s”,str); Работа с символьными строками – это работа с массивами типа char. При этом следует помнить об обязательном присутствии в конце строки символа ‘\0’. В языке С указатели введены как объекты, значениями которых служат адреса других объектов либо функций. Указатель – это адрес памяти. Значение указателя сообщает о том, где размещен объект, но не говорит о самом объекте. Как и всякие переменные, указатели нужно определять и описывать. Символ операции ‘*’ используется для задания “указателя на” объект. Кроме разделителя ‘*’, в определения и описания указателя входят спецификации типов, задающих типы объектов, на которые ссылаются указатели. Например: int *ptr; Данное определение следует понимать как “ptr является указателем на целое”. Указатель на тип void совместим с любым указателем. Например, если задано void *x; int *y; то допустимо следующее присваивание y=x; В общем случае переменная типа указатель описывается так: тип *переменная_указатель Двумя наиболее важными операциями, связанными с указателями, является операция обращения по адресу * (иногда называется операцией снятия ссылки или разыменования) и операция определения адреса &. |