Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
>
ANSI С/С++
(Модератор:
Вад
) > Тема:
объявление структуры
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: объявление структуры (Прочитано 12187 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dorador
Гость
объявление структуры
«
:
18-02-2004 14:00 »
в чем разница(если есть)/преимущества/недостатки
при таком объявлении структуры
Код:
typedef struct _CMD |
long code;
void *arg;
" CMD;
и при таком
Код:
typedef struct |
long code;
void *arg;
" CMD;
Записан
Anchorite
Гость
объявление структуры
«
Ответ #1 :
18-02-2004 16:10 »
В первом случае ты создаешь тип struct _CMD и даешь ему псевдоним CMD.
Во втором случае ты создаешь безымянный тип и даешь ему название CMD.
В твоем случае особой разницы нет.
Записан
Mfcer__
Команда клуба
Offline
объявление структуры
«
Ответ #2 :
18-02-2004 19:42 »
А еще зацените вот такой способ обявления (c) Microsoft из Ras.h:
Код:
#define RASDIALPARAMSA struct tagRASDIALPARAMSA
RASDIALPARAMSA
|
DWORD dwSize;
CHAR szEntryName[ RAS_MaxEntryName + 1 (;
CHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 (;
CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 (;
CHAR szUserName[ UNLEN + 1 (;
CHAR szPassword[ PWLEN + 1 (;
CHAR szDomain[ DNLEN + 1 (;
#if )WINVER >= 0x401:
DWORD dwSubEntry;
ULONG_PTR dwCallbackId;
#endif
";
Записан
dorador
Гость
объявление структуры
«
Ответ #3 :
19-02-2004 10:04 »
Anchorite
, что я создаю я понимаю. а вот могут ли быть какие-то теоретические случаи, когда станет заметна разница при применении этих объявлений?
Mfcer__
,
Цитата
#define RASDIALPARAMSA struct tagRASDIALPARAMSA
RASDIALPARAMSA
это применение #define вместо typedef - какой-то старый стиль наверное
теперь они написали бы
Код:
typedef struct tagRASDIALPARAMSA
|
....
" RASDIALPARAMSA;
Записан
Anchorite
Гость
объявление структуры
«
Ответ #4 :
19-02-2004 20:47 »
Будет, когда начнешь объявлять структуры, внутри которых имеются указатели на самих себя. Например
struct stack {
int data;
struct stack* pNext;
};
Как видишь, в этом случае приходится использовать конструкцию struct Name
Записан
Mfcer__
Команда клуба
Offline
объявление структуры
«
Ответ #5 :
19-02-2004 21:25 »
Цитата
struct stack {
int data;
struct stack* pNext;
};
что то я запутался- и как создавать объекты такой структуры ...
типа
Код:
struct stack *simple = new stuct stack;
simple->data = 5;
simple->pNext = new )что тут писать:
Записан
Anchorite
Гость
объявление структуры
«
Ответ #6 :
20-02-2004 03:55 »
struct stack {
int data;
struct stack* pNext;
};
typedef struct stack STACK;
STACK* topOpStack = NULL;
....
void push(int n) {
STACK* newTop = new STACK;
newTop->data = n;
newTop->pNext = topOfStack;
topOfStack = newTop;
}
int pop(int* pData) {
if (topOfStack == NULL)
return -1;
else if (pData == NULL)
return -1;
pData = topOfStack->data;
STACK temp = topOfStack;
topOfStack = topOfStack->pNext;
delete temp;
return 0;
}
Примерно так
Записан
Mfcer__
Команда клуба
Offline
объявление структуры
«
Ответ #7 :
22-02-2004 19:07 »
Цитата
pData = topOfStack->data;
STACK
*temp
= topOfStack;
topOfStack = topOfStack->pNext;
delete temp;
return 0;
Спасибо за ответ но тут кажется ошибочка вышла
Записан
Anchorite
Гость
объявление структуры
«
Ответ #8 :
23-02-2004 07:53 »
Действительно, забыл поставить звездочку.
Записан
lapulya
Молодой специалист
Offline
объявление структуры
«
Ответ #9 :
26-02-2004 10:17 »
ну даже если звездочку поставить, это все равно работать не будет
Цитата
int pop(int * pData)
{
....
pData = topOfStack->data;
...
}
надо либо так писать
int pop(int* pData)
{
...
*
pData = topOfStack->data;
...
}
и так юзать
int data;
pop(&data);
либо так
int pop(int
&
pData)
{
...
pData = topOfStack->data;
...
}
а юзать так
int data;
pop(data);
Записан
С уважением Lapulya
Anchorite
Гость
объявление структуры
«
Ответ #10 :
26-02-2004 17:26 »
Тоже согласен. Просто я и не пытался этот код компилировать. При попытке скомпилировать его все бы это всплыло сразу же.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
>
ANSI С/С++
(Модератор:
Вад
) > Тема:
объявление структуры
Загружается...