Передача аргументом символьного массива в С++

Поскольку один из вариантов реализации текстовых строк подразумевает их представление в виде символьного массива, нетрудно догадаться, что текстовые строки могут передаваться аргументами функциям практически так же, как и прочие массивы. Хотя имеются и свои особенности. В основном они касаются способов обработки таких символьных массивов. Пример приведен в следующем коде.
#include 
using namespace std;
int length(char *str){
for(int s=0;*str;s++,str++);
return s;
}
int main(){
char str[20]="This is a string";
cout << "Length is " << length(str) << endl;
return 0;
}
Функцией length(char *str) для массива, указанного аргументом функции, подсчитывается количество символов. Для этого используется оператор цикла, в блоке инициализации которого с нулевым начальным значением инициализируется переменная s. Переменная необходима для подсчета количества символов, В качестве проверяемого условия указана инструк­ция *str (где str есть аргумент функции - указатель на данные типа char). В данном случае использовано то обстоятельство, что фактическая текстовая строка, представленная в виде символьного массива, заканчивается нуль-символом. Поэтому достижение конца строки эквивалентно тому, что значение соответствующего элемента массива равняется нулю. В блоке инкремента две команды: одной на единицу увеличивается значе­ние перемен ной-счетчика а, а второй командой на единицу увеличивается значение указателя str. Напомним, что адресная арифметика имеет свои правила: увеличение указателя на единицу означает переход к следующей ячейке памяти. Поскольку элементы массива размещаются в памяти под­ ряд один за другим, изменение указателя на единицу означает переход к следующему элементу массива. В качестве значения функции возвра­щается значение переменой з. Также обращаем внимание читателя на то обстоятельство, что размер массива аргументом функции не передается. В данном случае в этом нет необходимости в силу двух причин. Во-первых, сам по себе размер массива не очень актуален, поскольку речь идет о сим­ вольном массиве, в котором фактические данные занимают не все ячейки. Во-вторых, поскольку существует четкий признак окончания строки (име­ется в виду нуль-символ, которым строка заканчивается), необходимости явно указывать размер строки нет.
Онлайн всего: 1
Гостей: 1
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте