Форум программистов, компьютерный форум CyberForum.ru

Про typedef - C++

Восстановить пароль Регистрация
 
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100
14.04.2013, 13:42     Про typedef #1
Читаю книгу Дейтела наткнулся на программу, в которой не могу понять одну деталь, а именно смотрим в комментариях ниже.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
struct listNode {
char data;
struct listNode *nextPtr;
};
 
typedef struct listNode LISTNODE; //просто LISTNODE стал синонимом listNode
typedef LISTNODE *LISTNODEPTR; //это не понятно, как указатель может стать синонимом типа структуру LISTNODE?
 
int main()
{
LISTNODEPTR startPtr = NULL; //это типа чтобы не писать LISTNODE *startPrt=NULL?
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 13:42     Про typedef
Посмотрите здесь:

typedef C++
typedef C++
typedef в c++ C++
C++ Про typedef
Typedef C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
14.04.2013, 13:44     Про typedef #2
Цитата Сообщение от aleksandr_t94 Посмотреть сообщение
это не понятно, как указатель может стать синонимом типа структуру LISTNODE
Просто читать следует как
C++
1
typedef LISTNODE* LISTNODEPTR;
LISTNODEPTR — это синоним для типа LISTNODE*.

Теоретически, такой тайпдеф помогает от ошибок вида:
C++
1
2
3
LISTNODE* startPtr, endPtr; // startPtr указатель, endPtr нет
 
LISTNODEPTR startPtr, endPtr; // оба указатели
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100
14.04.2013, 13:50  [ТС]     Про typedef #3
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Просто читать следует как
C++
1
typedef LISTNODE* LISTNODEPTR;
LISTNODEPTR — это синоним для типа LISTNODE*.
А можно было так написать?
C++
1
typedef struct listNode *LISTNODEPTR;
А потом просто в int main писать так как и раньше:
C++
1
LISTNODEPTR startPtr=NULL;//можно же заменить на listNode *startPtr=NULL?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
14.04.2013, 13:55     Про typedef #4
Конечно можно.
Yandex
Объявления
14.04.2013, 13:55     Про typedef
Ответ Создать тему
Опции темы

Текущее время: 13:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru