Здравствуйте, вот есть у меня код (рабочий) С++
char* string = "Internet";
cout << "string[2]=" << string[2];
это классная и полезная функция, но как же так получается что указатель (причем символьный) на строку "Internet" потом превращается в массив и программа покажет что
string[2]=t
прототип данного кода взял в учебнике, по которому учу С++, но там не написано как это случатся, пожалуйста объясните!
P.s. Не писать что тебе это типа не надо, мне надо знать все, так будет лучше
Другие языки программирования и технологии
Указатель на строку - массив, как это?
В языках программирования тип данных "строка" часто рассматривается как упорядоченный набор переменных типа "символ". Упорядоченный набор данных - это массив. Строка - массив из символов, у тебя получается линейный массив, длиной 8 элементов. А так как в массивах индексация начинается с 0, соответвенно вызывая 2й элемент массива ты получаешь string[2]=t .
Разница же в переменной (массив) и указателе в том, что переменная всегда указывает на одно и то же место памяти, указатель же содержит что-то типа ссылки на место в памяти, в которую внесена эта переменная или константа.
Разница же в переменной (массив) и указателе в том, что переменная всегда указывает на одно и то же место памяти, указатель же содержит что-то типа ссылки на место в памяти, в которую внесена эта переменная или константа.
Что-то Вы сразу в дебри полезли, не изучив основ. А с чего он должен перестать? Теперь работаем не с указателем, а с переменной напрямую. От этого строка массивом символов быть не перестала)
Наоборот. Не указатель превращается в массив, а имя массива возвращает указатель на его нулевой элемент! Если a- указатель (или массив) , а b - целое, то a[ b] полностью эквивалентно *(a+b). Т. е. вся работа с массивами - это, на самом деле, работа с указателями, замаскированная под работу с массивами.
Массив в твоем примере присутствует. "Internet" - это не какая-то абстрактная строка, а константный массив из 9 символов (это не опечатка, именно из девяти) , указатель на который (string) ты выставляешь.
--
Во втором случае используется явно описанный в библиотеке метод string::operator[], который работает эквивалентно стандартному для особого типа string.
Массив в твоем примере присутствует. "Internet" - это не какая-то абстрактная строка, а константный массив из 9 символов (это не опечатка, именно из девяти) , указатель на который (string) ты выставляешь.
--
Во втором случае используется явно описанный в библиотеке метод string::operator[], который работает эквивалентно стандартному для особого типа string.
Похожие вопросы
- Указатели на строки в C++
- Как отдельно подсчитать количество русских букв и английских букв в строке массива???
- Вывести на экран два максимальных элемента всех нечетных строк массива c#
- Вопрос по указателям и массива С++
- С++.Обработка строк при помощи указателей.
- Инициализация массива. Указатели.
- Объясните пожалуйста, что означает эта строка WRITE('ВВЕДИTE ЭЛЕМЕНТ МАССИВА '); READLN(MAS[1])?
- Массив указателей в C++
- Помогите с программой Одномерные массивы и указатели
- Необходимо упорядочить строки двумерного массива, по возрастанию первого эл-та. СИ.