![]() |
|
Модераторы: bsa |
![]()
|
|
| Artefact |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 18.2.2008 Репутация: нет Всего: нет |
Доброй ночи, уважаемые форумчане. Я пару месяцев назад начал изучать программирование, поэтому могу кое-что писать некорректно. Изучаю по учебнику Брайана Оверленда "С++ без страха". На одной из тем у меня появилась проблема, а именно прямые указатели и индексирование массива. Я пытался разобраться с ней, в теории вроде понятно, а на практике ничего не получается. Например, код задачи таков:
Этот код надо переписать с использованием прямых указателей. Объясните пожалуйста как это делается? Буду рад любой помощи. |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| opjox |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 17.1.2008 Репутация: 2 Всего: 14 |
source777, нельзя так делать. Если в строке будет буква(ы) в верхнем регистре, то работать будет не корректно.
Лучше будет так:
|
|||
|
||||
| Artefact |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 18.2.2008 Репутация: нет Всего: нет |
opjox, спасибо, более менее понятно, но не могли бы объяснить почему именно такое условие:
конкретнее, почему *s. P.S. Простите если спрашиваю элементарщину, но я очень хочу разобраться и научиться программировать на срр. С Уважением, Artefact. |
|||
|
||||
| opjox |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 17.1.2008 Репутация: 2 Всего: 14 |
Как вы, должно быть, знаете, признаком окончания строки является нуль-символ. В Си любое не нулевое значение является истинным, а нулевое – ложью.
Сложим эти две вещи и получим, что если конец строки еще не достигнут, то, проверив на истинность тот символ, с которым мы собираемся работать, мы получим истину, а когда мы наткнемся на нуль-символ, то ложь. Этим:
мы обращаемся к символу, по адресу, который записан в s. Таким образом, условие цикла можно прочитать так: Пока не встретим нуль-символ, выполняем цикл и переходим к следующему символу, смещая указатель вперед на одну ячейку. P.S. также можно работать и через индексацию:
Это сообщение отредактировал(а) opjox - 19.2.2008, 02:31 |
||||
|
|||||
| Artefact |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 18.2.2008 Репутация: нет Всего: нет |
opjox, спасибо вам большое за разъяснение, очень вам благодарен. Я почти разобрался, но еще конечно буду искать информация по указателям.
P.S.Хотел поставить вам +1, но к сожалению недостаточно постов... |
|||
|
||||
| opjox |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 17.1.2008 Репутация: 2 Всего: 14 |
На мой взгляд, с ними просто нужно набить руку. Просто помните, что указатель – это простая переменная, в которую записан адрес, по которому можно писать или читать (с помощью операции «*»). А также в сами эти переменные (указатели) можно записать другой адрес или модифицировать старый. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |