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

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

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

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

05.01.2013, 17:17. Просмотров 364. Ответов 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)
Заранее спасибо тому, кто сможет популярно объяснить эти места или дать наводку, где можно восполнить пробелы в моих знаниях.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2013, 17:17     Популярно объясните про указатели
Посмотрите здесь:

Вопрос про указатели C++
C++ Вопрос про указатели
C++ Опят про указатели)
Про указатели . C++
Про указатели C++
Расскажите популярно про ссылки и указатели C++
C++ Объясните пожалуйста, как работает код. Указатели
C++ Объясните, пожалуйста, зачем в C++ нужны указатели
Указатели, объясните задачу C++
Про указатели C++
Объясните как выделяется память под умные указатели C++
C++ Указатели, объясните

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

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

Добавлено через 38 секунд
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Как можно сравнивать строку (или что мы получили в begin?) и адрес?
А при чём здесь вообще сравнение строки с адресом?
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
05.01.2013, 17:36     Популярно объясните про указатели #3
1) указателю begin присваивается адрес первого элемента массива символов str.
2) получаем адрес первого и последнего. А потом в цикле от начального до конечного идут какие-то действия.
3) скорее адреса.
Croessmah
Модератор
Эксперт CЭксперт С++
12878 / 7264 / 810
Регистрация: 27.09.2012
Сообщений: 17,946
Записей в блоге: 2
Завершенные тесты: 1
05.01.2013, 17:38     Популярно объясните про указатели #4
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Что значит эта строчка?
можете считать имя массива константным указателем на начало массива(на первый элемент).
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Зачем мы получаем адрес последнего символа строки?
чтобы потом сравнивать его с указателем begin, который увеличивается в цикле. А end уменьшается.
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
05.01.2013, 17:39     Популярно объясните про указатели #5
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
C++
1
while(begin < end)
сравниваются адреса, в цикле итерация begin на байт вперёд end на байт назад, при пересечении str будет полностью перевёрнута.
Yandex
Объявления
05.01.2013, 17:39     Популярно объясните про указатели
Ответ Создать тему
Опции темы

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