|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.04.2012, 21:51 | #1 | |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
С++ Visual как правильно вызвать функцию с указателем?
Здраствуйте!
Разбираюсь с бинарными деревьями - нашла пример функции создания дерева. Там при объявлении и описании функции используется указатель на указатель типа структура. По логике вещей при вызове функции мы передаем только указатель и количество элементов дерева. Но компилятор пишет: Цитата:
Код:
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
|
|
03.04.2012, 00:36 | #2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Blondy
Разбираюсь с бинарными деревьями ... сначала надо бы разобратьсмя с основами языка, а потом уже лезть в стьруктуры данных. Make_Binary_Tree(&BTree, n);//вызов функции создания дерева Print_BinaryTree(BTree, l)//печать на экран дерева
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
03.04.2012, 00:38 | #3 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
PS. Посмотрел код внутри make_binary_tree...
учитывя что BinaryTree* BTree = NULL; а потом ptr = Node; while (*ptr != NULL) { это жесткач. :D
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
03.04.2012, 01:40 | #4 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
Спасибо Вам большое! Я просто действительно не очень в указателях, тем более в многозвездочных))
И скажите пожалуйста, что с Вашей точки зрения неправильно с узлами - ведь мы создаем вначале пустое дерево Код:
Или я неправильно интерпетирую код?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Последний раз редактировалось Blondy; 03.04.2012 в 01:44. |
03.04.2012, 08:14 | #5 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Соответственно именно над ней пройдут операции. И за пределами функции она существовать не будет. А в Print_BinaryTree(BinaryTree BTree, l) ты обьявляешь еще одну опятьтаки локальную переменную, но уже для Print_BinaryTree. Так что Rififi дело говорит. Другое дело если бы ты приводила типы: Код:
Но в данном случае это не нужно. Цитата:
Далее. Я никак не могу взять в толк, как же у тебя эта ветка изначально создается. Смотри: ты объявила переменку: Код:
И далее ее передаешь в функцию создания древа: Код:
Соответственно внутренний цикл сразу проскакивает на Код:
Правильно: Код:
Опять внутренний цикл пропустит свою отработку, опять ты выйдешь на (*ptr) = new BinaryTree(); получив таким образом простой динамический список. Причем как я понимаю, элементы этого списка друг с другом не связаны, поскольку нигде не увидел я работы с полями Код:
I'm learning to live...
Последний раз редактировалось Stilet; 03.04.2012 в 08:17. |
|||
03.04.2012, 13:18 | #6 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Blondy
Я просто действительно не очень в указателях, тем более в многозвездочных)) Интересная особенность современного C++ - это то, что на нем возможно создавать программы, в "стиле Java/C#", то есть не используя голые указатели вообще. Недостатком данного подхода является более высокий порог вхождения, необходимость поднять значительно больше информации и ознакомиться со стандартной библиотекой шаблонов на уровне немного поболшем чем "ой, простите, я тут мимо проходила" :D так напримре, эта уродливая запись на "Си с классами" void Make_Binary_Tree(BinaryTree** Node, int n); переписывается на C++ std::shared_ptr<BinaryTree> Make_Binary_Tree(int n);
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
03.04.2012, 16:14 | #7 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
Дорогой Rififi, к сожалению, фокусы без указателей не удасться осуществить(( Я знаю что в С++ и вектора есть, и масса всего. Но нас туркают "мануалом", никаких готовых библиотек - типа, чтобы мы имели представление, ознакомить все хотят нас... а от этого еще больше путаницы. Уж лучше бы действительно дали возможность пользоваться готовыми шаблонами - вон, в C# есть и очереди, и стеки и двунаправленные списки и не надо ничего выдумывать.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вызвать функцию из класса ? | Silly Student | Общие вопросы C/C++ | 2 | 13.10.2011 20:07 |
Как в Visual Studio 2010 вызвать функцию, находящуюся в файле .cpp, из Form1.h ? | MrRockchip | Общие вопросы C/C++ | 0 | 20.02.2011 17:37 |
Как вызвать функцию из юнита? | Des | Общие вопросы Delphi | 5 | 06.11.2010 12:47 |
Не могу правильно вызвать функцию md5 | TwiX | Общие вопросы C/C++ | 3 | 18.03.2010 22:23 |
Как вызвать функцию? | blackstersl | Общие вопросы Delphi | 10 | 07.06.2009 19:22 |