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

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

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

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

05.01.2013, 17:17. Просмотров 382. Ответов 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++
Поясните пожалуйста код с 26 по 31 строчку включительно, если можно, что называется на пальцах. Вопросы: 1) Не понимаю зачем там...

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
05.01.2013, 17:36     Популярно объясните про указатели #3
1) указателю begin присваивается адрес первого элемента массива символов str.
2) получаем адрес первого и последнего. А потом в цикле от начального до конечного идут какие-то действия.
3) скорее адреса.
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
05.01.2013, 17:38     Популярно объясните про указатели #4
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Что значит эта строчка?
можете считать имя массива константным указателем на начало массива(на первый элемент).
Цитата Сообщение от Mr.ILLUMINOR Посмотреть сообщение
Зачем мы получаем адрес последнего символа строки?
чтобы потом сравнивать его с указателем begin, который увеличивается в цикле. А end уменьшается.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 17:39     Популярно объясните про указатели
Еще ссылки по теме:

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

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

Опят про указатели) - C++
int a = 5; int *b =&amp;a; cout &lt;&lt;*b&lt;&lt;endl; *b++; cout &lt;&lt;*b&lt;&lt;endl; В строке 4 что происходит? По идее если * то мы работаем...

Вопрос про указатели - 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++
char *a = &quot;s&quot;; 1. Выделяется место в памяти 2. В это место записывается s 3. Указателю a приваивают адрес памяти где храниться s ...

Про массивы и указатели - 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() { ...


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

Или воспользуйтесь поиском по форуму:
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     Популярно объясните про указатели
Ответ Создать тему
Опции темы

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