| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Снова указатели |
| Автор: ConverterDU 25.2.2011, 13:28 | ||
| Уважаемые программисты, помогите мне пожалуйста! Вот программа, которую я опять таки сделал кое как с моим руководителем! Программа создает список из трех элементов и печатает его. Есть функция создания новон=го элемента в конце списка. Я не понимаю некоторые строки программы, так скажем! Про указатели я все вроде бы понимаю! Я прочитал все, что естьна вашем форуме и не толбко, суть ясна. Но я не понимаю, зачем он нужен на примере вот конкретной программы. Вот объявил я указатель, который указывает на область памяти типа int и имеет адрес 0х11111(чтоб легче различать)...и сделал указатель на этот указатель. Получается во втором указателе будет записан адрес первого 0х11111, а его собственный, к примеру, 0x22222.....так получается или нет?! Остальные вопросы ниже напротив строк:
Зачем все это нужно то? Чтобы я мог в каждой функции его изменять отдельно или как? Прошу, потратьте на меня немного своего времени и помогите разобраться с этим, наконец! Заранее спасибо! |
| Автор: borisbn 25.2.2011, 15:34 | ||
попробуй (только для уяснения) создать тип
и везде, где увидишь List_t* (с одной звездой) заменить его на PList_t потом посмотри внимательно на то, что получилось, и... думаю будет яснее... я лично так врубался в указатели на указатели |
| Автор: ConverterDU 25.2.2011, 15:58 |
| ну вы же так все хорошо это понимаете, объясните полно, плз! |
| Автор: bsa 25.2.2011, 16:32 |
| ConverterDU, чтобы функция могла поменять указатель, который передается ей в качестве параметра необходимо передавать адрес этого указателя. Это и есть одна из сфер использования указателей на указатель. Есть еще одна сфера - массивы динамических массивов или просто динамически выделяемых данных. |
| Автор: borisbn 25.2.2011, 17:32 | ||||||||
ConverterDU, смотри. В таком коде вопросов нет ?
тогда и в таком не должно быть
давай заменим в первом коде int на некий T
теперь давай во втором коде заменим int * на PT
как видишь, теперь между этими вариантами нет никакой разницы, ну, за исключением того, что в 1-м варианте fill записывает в результат целое число, а во 2-м - указатель, т.е. рез-т работы ф-ции malloc |
| Автор: ConverterDU 27.2.2011, 17:12 |
| bsa, спасибо! borisbn, спасибо огроменное, мне теперь с указателями, по сути, все понятно стало! что бы я без тебя делал!! Круто!! |
| Автор: bsa 27.2.2011, 20:16 | ||
|
| Автор: ConverterDU 1.3.2011, 09:57 |
| bsa, хорошо, я просто не знал, что нужо! |