Доступ к символам внутри C-строки

После определения C-строки в переменной сохраняется адрес первого символа. Иными словами, название переменной является указателем, который ссылается на первый символ строки. Поэтому доступ к символу в строке может осуществляться как по индексу (нумерация начинается с нуля), указанному внутри квадратных скобок, так и с использованием адресной арифметики. Например, следующие две инструкции вывода являются эквивалентными:

char str[] = "строка";
std::cout << str[1] << std::endl;     // т
std::cout << *(str + 1) << std::endl; // т

Символ можно не только получить таким образом, но и изменить:

char str[] = "строка";
str[0] = 'С';                  // Изменение с помощью индекса
*(str + 1) = 'Т';              // Изменение с помощью указателя
std::cout << str << std::endl; // СТрока

Обратите внимание на то, что отдельный символ указывается внутри апострофов, а не внутри кавычек. Если указать символ внутри кавычек, то вместо одного символа будет два: собственно сам символ плюс нулевой символ.

Объявить указатель и присвоить ему адрес строки можно следующим образом:

char *p = nullptr;
char str[] = "строка";
p = str;
*p = 'С';
++p;      // Перемещаем указатель на второй символ
*p = 'Т';
std::cout << str << std::endl; // СТрока

Обратите внимание на то, что перед названием строки не указывается оператор &, так как название переменной содержит адрес первого символа. Если использовать оператор &, то необходимо дополнительно указать индекс внутри квадратных скобок:

p = &str[0]; // Эквивалентно: p = str;

При инициализации указателя ему можно присвоить строку. Такие строки нельзя изменять, поэтому обычно перед типом указывают ключевое слово const. Пример:

const char *str = "String";
std::cout << str << std::endl; // String

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов