Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2012, 15:57   #1
Darkwinged
Пользователь
 
Регистрация: 29.04.2009
Сообщений: 17
По умолчанию Запутался в typedef

Всем привет!
Я разбираю книгу Седжвига "Алгоритмы на С++".
Я не силён в правильных и удобных typdef'ах и наткнулся на код, который никак не могу понять:
Код:
struct node
{
некоторая структура
};
typedef node *link;
static link **grid;
Насколько я понял, typedef позволяет объявлять node как *link и в следующей же строчке объявляется link **grid. То бишь без typedef'a &node **grid?
Никак не могу понять, что же такое **grid в результате и почему нельзя было просто объявить node **grid.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off". Bjarne Stroustrup
Darkwinged вне форума Ответить с цитированием
Старый 03.11.2012, 16:04   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Предположу (пусть более сведущие в с++ программисты поправят), что:
1) У нас получился node ***grid;
2) grid - указатель на 2мерный массив node'ов (указатель на массив указателей на массивы node'ов) или 3-мерный куб node'ов (если выделить память правильно ).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.11.2012 в 16:14.
BDA вне форума Ответить с цитированием
Старый 03.11.2012, 16:12   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
typedef позволяет объявлять node как *link
Нет, линк есть указатель на нод, т.е. link = node*

Цитата:
То бишь без typedef'a &node **grid?
Нет, см. выше

Цитата:
Никак не могу понять, что же такое **grid в результате и почему нельзя было просто объявить node **grid.
Для красоты
Для удобства

**grid типа link по объявлению

По логике и названию переменной - грид просто указатель на динамическую сетку (матрицу).
p51x вне форума Ответить с цитированием
Старый 03.11.2012, 16:38   #4
Darkwinged
Пользователь
 
Регистрация: 29.04.2009
Сообщений: 17
По умолчанию

Теперь понял. По сути выходит:
Код:
typedef node* link;
Запись в книге сбила меня с толку.
Спасибо за пояснения!
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off". Bjarne Stroustrup
Darkwinged вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка на typedef!!! ice173 Общие вопросы C/C++ 2 24.05.2011 10:04
template, typedef и наследование valdemar593 Общие вопросы C/C++ 2 12.03.2011 18:46
шаблоны и typedef в С++ EniOk Помощь студентам 19 02.03.2011 16:55
Для чего используют typedef prikolist Общие вопросы C/C++ 17 16.04.2009 15:36
Использование typedef с vector <type> kezman Общие вопросы C/C++ 2 19.07.2008 21:17