Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
|
||||||
#1 | ||||||
Указатель на строку - C++07.08.2012, 14:16. Просмотров 10569. Ответов 15
Метки нет Все метки)
(
Скажите пожалуйста если есть
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
07.08.2012, 14:16 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Указатель на строку (C++):
15
Указатель на строку: как выводить не всю строку целиком, а конкретную букву - C++ Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку - C++ Указатель на строку - C++ Указатель на строку - C++ Как получить ссылку на указатель или указатель на указатель в массиве? - C++
|
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
|
|
07.08.2012, 14:28 [ТС] | #4 |
То есть это 2х мерный массив?
0
|
DiffEreD
|
||||||
07.08.2012, 14:45 | #5 | |||||
Откуда вы это взяли
0
|
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
|
|
07.08.2012, 19:19 [ТС] | #6 |
Насколько я понимаю синтаксис (*указатель)[1] это тоже что и указатель[0][1] - что является 2мерным массивом - я просто пытаюсь разобраться
Вот я уже этим интересовался там вроде объяснили 2х мерные массивы
0
|
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
|
|
07.08.2012, 20:34 [ТС] | #8 |
Почитал здесь http://www.cyberforum.ru/blogs/18334/blog97.html, но:
pt-это указатель на адресс 0-го элемента или указатель на 1мерный массив тогда (*pt) это что?указатель на массив? и как тогда описать ss - что это?адресс 0 элемента массива?
0
|
DaskOFF
|
|
07.08.2012, 20:41 | #9 |
ладно вот вам массив ( а вообще строка - это и есть массив символов)
int ma= {1,2,3,4,5}; ma - указатель на 0 элемент ma[3] - равнозначно ma+3 указатель на 3( 4 индексирование массива с 0) элемент если 1 ячейка занимает 4 байта то шаг ma+1 - указатель переходит на следующие 4 байта
0
|
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
|
||||||
07.08.2012, 21:10 [ТС] | #10 | |||||
Да не в этом вопрос.
Вопрос изначально в типе string я понимаю о шагах указателя(и о том что не везде он будет 4 байта тоже кстати) Вопрос в
0
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
07.08.2012, 21:26 | #12 |
Указатель - это переменная, в которой находится адрес. pt - это переменная (название переменной - указатель), в которой находится адрес объекта str. Знак * , стоящий перед переменной-указателем, означает операцию разыменования указателя. Если pt - это переменная, содержащая адрес str, то *pt - это то, что находится по этому адресу. В данном случае, сам объект str.
Добавлено через 11 минут str - это не просто строка в стиле С, т.е. массив char c символом '\0' в конце. Это объект класса string, в данном случае, инициализированный строковым литералом "Big!". Сам строковый литерал хранится в статической памяти, а в объекте str хранится указатель на эту область памяти.
1
|
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
|
|||||||||||||||||||||
07.08.2012, 21:27 [ТС] | #13 | ||||||||||||||||||||
я так понимаю я не могу внятно объяснить что я пытаюсь понять
0
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
08.08.2012, 14:41 | #14 | ||||||||||
Что вы считаете разыменованием ещё раз? Вот это: *pt и это: pt[0], по сути, одно и тоже. То, что находится в памяти, адрес начала которой содержится в pt. Имя массива преобразуется в указатель на начало массива. pt[0] - cодержимое памяти, по адресу в pt, со смещением 0. Исходя из этого, становится понятным и это: (*pt)[0] , pt[0][0]. Одно и то же. Никаких двумерных массивов тут нет. pt[0] - сам объект str, а так как объект string допускает обращение по индексу к элементам строки, с которой этот объект связан, то pt[0][i] (где i - индекс) - это обращение к i - элементу строки.
Добавлено через 14 минут В общем виде, можно так написать: если adr - адрес некого объекта, то adr[i] - содержимое памяти по этому адресу со смещением i, где i равно размеру объекта.
1
|
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
|
|
08.08.2012, 23:49 [ТС] | #15 |
Про смещения я понимаю(хотя о 32 байтах в типе string не знал) - и вообще о указателях многое, вопрос скорее был о тои что хранит объект string - адресс строкового литерала в статической памяти.
ну это уже совсем...
0
|
08.08.2012, 23:49 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
08.08.2012, 23:49 |
Привет! Вот еще темы с ответами:
15
Указатель на строку массива - C++ Массив и указатель на строку - C++ указатель на строку типа Integer - C++ Работа с строкой (указатель на строку) - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |