Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mr.ILLUMINOR
4 / 4 / 0
Регистрация: 13.04.2012
Сообщений: 37
#1

Популярно объясните про указатели - C++

05.01.2013, 17:17. Просмотров 399. Ответов 4
Метки нет (Все метки)

Что-то плохо даётся мне тема про указатели. Я хорошо уяснил, что вот так создаётся указатель:

C++
1
int *pointer;
Я так же хорошо уяснил как получить адрес ячейки:

C++
1
pointer = &x;
Я понял как получать значение по его адресу:

C++
1
value = *pointer;
Я разобрался как менять значения, расположенные по адресу:

C++
1
(*pointer)++
или

C++
1
*pointer = 90;
Но вот следующая программа (из учебника по C++ для меня непонятна):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>;
#include <windows.h>;
using namespace std;
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    char str[] = "Типичный программист", *begin, *end, t;
    int lenght;
    cout << "Исходная строка: " << str << "\n";
    lenght = strlen(str);
    begin = str;
    end = &str[lenght-1];
    while(begin < end)
    {
        t = *begin;
        *begin = *end;
        *end = t;
        begin++;
        end--;
    }
    cout << "Перевёрнутая строка: " << str << "\n";
    system("pause");
    return(0);
}
Что значит эта строчка?

C++
1
begin = str;
Зачем мы получаем адрес последнего символа строки?

C++
1
end = &str[lenght-1];
Как можно сравнивать строку (или что мы получили в begin?) и адрес?

C++
1
while(begin < end)
Заранее спасибо тому, кто сможет популярно объяснить эти места или дать наводку, где можно восполнить пробелы в моих знаниях.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2013, 17:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Популярно объясните про указатели (C++):

Расскажите популярно про ссылки и указатели - C++
Помогите разобраться со ссылками и указателями на различные объекты. Запутался вообще в них полностью. Когда читаю книгу про них, то вроде...

Указатели, объясните - C++
Поясните пожалуйста код с 26 по 31 строчку включительно, если можно, что называется на пальцах. Вопросы: 1) Не понимаю зачем там...

Указатели, объясните задачу - C++
Объясните 4 пункт, желательно с примером.

Объясните, пожалуйста, зачем в C++ нужны указатели - C++
Никак что-то не пойму, зачем в C++ указатели? Ведь можно спокойно программировать без них.

Про указатели . - C++
Всем привет: Продолжаю свою традицию: Вот придумал необычную задачку, может кому то она покажется неинтересной, сложная или простая...

Про указатели - C++
В среде C++ Builder разбираюсь с логикой работы с указателями. По определению (в моем его понимании) указатель это адрес в памяти на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
05.01.2013, 17:27 #2
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
begin = str;
Присваивание одному указателю значения другого.

Добавлено через 38 секунд
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Как можно сравнивать строку (или что мы получили в begin?) и адрес?
А при чём здесь вообще сравнение строки с адресом?
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
05.01.2013, 17:36 #3
1) указателю begin присваивается адрес первого элемента массива символов str.
2) получаем адрес первого и последнего. А потом в цикле от начального до конечного идут какие-то действия.
3) скорее адреса.
0
Croessmah
Эксперт CЭксперт С++
13202 / 7473 / 839
Регистрация: 27.09.2012
Сообщений: 18,368
Записей в блоге: 3
Завершенные тесты: 1
05.01.2013, 17:38 #4
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Что значит эта строчка?
можете считать имя массива константным указателем на начало массива(на первый элемент).
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Зачем мы получаем адрес последнего символа строки?
чтобы потом сравнивать его с указателем begin, который увеличивается в цикле. А end уменьшается.
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
05.01.2013, 17:39 #5
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
C++
1
while(begin < end)
сравниваются адреса, в цикле итерация begin на байт вперёд end на байт назад, при пересечении str будет полностью перевёрнута.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 17:39
Привет! Вот еще темы с ответами:

Про указатели - C++
Здравствуйте я совсем маленький C++ программер, вот сейчас разбираюсь с указателями. Подскажите пожалуйста. В книге встретил пример,...

Объясните пожалуйста, как работает код. Указатели - C++
Если не сложно, напишите пожалуйста комметнтарии к каждой строке. Никак не могу разобраться. Программа разделяет строку на слова. ...

Вопрос про указатели - C++
#include &lt;iostream.h&gt; int main() { int x; int *Pointer; pointer = &amp;x; cout &lt;&lt; pointer; cout &lt;&lt; *ponter; return 0; ...

Про массивы и указатели - C++
#include &lt;iostream&gt; using namespace std; int Digit = { {1,8,6,7},{3,2,9,4},{5,1,2,7},{8,6,2,5} }, test; int main() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.01.2013, 17:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru