![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bend0r |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.9.2005 Репутация: нет Всего: 2 |
в учебнике Павловской код линейного списка такой
если заменить на
в чем будет разница и вообще для чего надо было использовать указатель на указатель? Это сообщение отредактировал(а) bend0r - 14.9.2005, 13:13 |
||||||||
|
|||||||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Я рад за неё. А где вопрос? -------------------- Да. Именно так. |
|||
|
||||
| bend0r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.9.2005 Репутация: нет Всего: 2 |
во терь есть вопрос, не туда нажал
|
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Ок
Разница есть. В последней строчке функции add() мы присаеваем новое значение для pend. Если сделать так, как ты написал во втором варианте, то при вызове функции будет создана копия pend, все изменения которой после выхода из функции будут потеряны. Как я понимаю, это учебник по Си, а не С++? -------------------- Да. Именно так. |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Судя по оператору new - это всё-таки Си++. Какой ужас
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Опа... Тогда, конечно, ужас... -------------------- Да. Именно так. |
|||
|
||||
| bend0r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.9.2005 Репутация: нет Всего: 2 |
всеравно не понятно
В моем варианте в add() передается указатель, делается копия его, сама функцияя работает с тем на что он указывает, при выходе из функции потерены будут если тока изменения адреса указателя. так ведь оно или не так? вот щас тестил помоему тоже самое:
результат: Do fun 10 V fun 15 Posle 15 a= 15 p/s/ учебник по Си/Си++. учебник вообще зло не кому не советую если узучать с 0 и это первый язык который изучаете. мне его мой препод посоветовал Это сообщение отредактировал(а) bend0r - 14.9.2005, 14:14 |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
bend0r
Блин... А ты ведь прав. Там никакой разницы. -------------------- Да. Именно так. |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: 2 Всего: 3 |
Просто мы когда используем *pend а не **pend меняем указатель лишь в теле ф-ии, но не глобально
ИМХО такой подход реален если пенд у тя будет глобальным и не будет параметром ф-ии --------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| bend0r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.9.2005 Репутация: нет Всего: 2 |
не совсем понятно. есть вообще какое нибуть практическое применение у указателю на указатель(кроме динамической матрицы)? небольшой пример не помешалбы |
|||
|
||||
| Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Ты привёл его сам в первом посте Обрати внимание на *pend=pv; Этой командой изменяется pend из ф-ции main: add(&pend,i); В твоём втором примере(когда передаётся просто указатель -- void add(Node *pend, int d);) указатель копируется, и ф-ция add работает с копией указателя. Указатель из ф-ции main НЕ изменяется функцией add из второго примера. А вот в случае, когда передается указатель на указатель на pend, то ф-ция add может заменить значение указателя в функции main. Чтоб стало наглядно понятно замени в первом примере основной цикл на
а во втором на
Ф-ция printf("pend=%p\n",pend); выведет значение указателя в удобо читаемом виде. Во втором примере оно не будет изменяться. Это сообщение отредактировал(а) Mayk - 14.9.2005, 19:37 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
| BreakPointMAN |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 14 Всего: 24 |
Когда-то я тоже читал Павловскую... и сделал на форзаце сей книги (да, есть у меня вредная привычка читать книгу с карандашом...) %)) такие пометки:
за точность написанного не ручаюсь, ибо был молодой и зелёный... %)) но вроде так... )) -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
||||||||
|
|||||||||
| bend0r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 14.9.2005 Репутация: нет Всего: 2 |
всем спасиба разобрался.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |