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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
#1

не могу разобраться с typedef - C++

19.06.2011, 03:17. Просмотров 791. Ответов 10
Метки нет (Все метки)

помогите разобраться
typedef задает синоним типа только?

например:

C++
1
typedef int myint;
тут понятно все, вместо int можно писать myint

а если написать
C++
1
typedef int *pint;
что получается в этом случае?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2011, 03:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не могу разобраться с typedef (C++):

Не могу разобраться с С++ - C++
Всем Привет, так я кодеру в Делфи. Не давно нашел что мне нужно но оy написан на С. Вот и начался у меня проблемы с кодами. Вот часть...

не могу разобраться.. - C++
Вывести на экран все натуральные числа из диапазона от A до B, в записи которых цифра 7 встречается ровно N раз. При отсутствии чисел с...

не могу разобраться с синтаксисом - C++
известен код программы, но не могу разобраться что к чему. если не трудно объясните что означает каждая строчка. заранее спасибо. ...

Не могу разобраться с 2D игрой - C++
Наверное это очень баянисто....многие кто начинали программировать писали свои собственные игры,я тоже пытался написать,например морской...

Не могу разобраться в vector<> - C++
Доброго времени суток. Не могу понять реализацию вектора, да и вообще с векторами плохо знакома. Мне бы только показать, как ввести...

Не могу разобраться с LU методом. (C++) - C++
Программка выполняет решение СЛАУ двумя методами, методом вращения и методом LU-разложения. Так-то все работает, но есть одно но, как...

10
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
19.06.2011, 03:22 #2
Olejeg85, синоним указателя на int. Нагляднее написать так:
C++
1
typedef int * pint;
1
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
19.06.2011, 03:54 #3
Цитата Сообщение от Olejeg85 Посмотреть сообщение
помогите разобраться
typedef задает синоним типа только?
Конечно нет функции, объектов, особенно хорошо применять с функциями обратного вызова готовить шаблон для передачи через параметр вызывающей функции и т.п.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
typedef  int  (cube)(int x, int y, int z);
 
int  result(int x, int y, int z) {
    return x*y*z;
}
 
typedef  struct obj {
    int a, b;
} *pobj;
 
struct  access {
     mutable short  w;
};
 
 
typedef  const  access  my;  
#pragma warning(disable : 4269)
 
 void  main(void){
 
 
           cube*  c = result;
    printf("cube - V = %d\n", (*c)(10, 20, 30) );
 
    obj o;
    o.a = 0xff >> 1;
    o.b = 0xf0 | 0x0f;
    pobj p = &o;
    printf("byte = %d...%d", p->a, p->b );
 
    my m;
    m.w = 255;
           printf("\nmutable access CONST = %d\n", m.w);
    
}
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
19.06.2011, 03:59 #4
xAtom, всё это, по сути, типы. И typedef задаёт их синонимы.
Функцию вы всё равно объявить не сможете через синоним, сможете только указатель на неё. А структуры и классы - чем не типы? Типы, просто заданные пользователем.
0
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
19.06.2011, 10:56  [ТС] #5
ну вот пример
C++
1
typedef int *pint
C++
1
pint myint;
это эквивалент:
C++
1
int *myint;
почему тогда запись
C++
1
const pint myint;
это получается константный указатель?
если эквивалент кода будет выглядеть так:
C++
1
const int *myint
это же получается указатель на константу...
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
19.06.2011, 11:28 #6
Olejeg85, typedef это не препроцессор, он не осуществляет подстановку синонома. В данном случае pint имеет тип указатель и именно поэтому сам становится константным, а не указателем на константу.
1
xENVYx
7 / 7 / 0
Регистрация: 12.06.2011
Сообщений: 16
19.06.2011, 11:35 #7
на сколько я понимаю модификатор const изменяет тип *pint, который является указателем, и при записи:
C++
1
const pint myint;
объявляется как константный указатель на тип
C++
1
int
т.е. твоя запись
C++
1
const pint myint;
становится эквивалентной следующей:
C++
1
int *const myint
а это уже как видишь константный указатель, а не указатель на константу, если я в чем-то ошибся поправьте кто знает =))
1
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,494
19.06.2011, 11:38 #8
может поможет
Как грамотно нтерпретировать ввод нового имени типа, введённого typedef
0
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
19.06.2011, 12:44  [ТС] #9
просто запутывает немного

когда const вначале пишется это указатель на константу, а в случае с typedef он тоже в начале пишется но получается константный указатель, из-за этого я и запутался с самого начала

Добавлено через 1 час 0 минут
и получается никакой разницы нету в записи между?

const pint myint;
и
pint const myint;
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
19.06.2011, 12:49 #10
Цитата Сообщение от Olejeg85 Посмотреть сообщение
просто запутывает немного

когда const вначале пишется это указатель на константу, а в случае с typedef он тоже в начале пишется но получается константный указатель, из-за этого я и запутался с самого начала

Добавлено через 1 час 0 минут
и получается никакой разницы нету в записи между?

const pint myint;
и
pint const myint;
именно, здесь более подробно описано это.
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.06.2011, 09:37 #11
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
typedef int *ip;
 
int main(void)
{
    ip p;
    const ip cp;
    const int *ptoc;
    
    p = NULL;
    cp = NULL;
    ptoc = NULL;
    
    return 0;
}
Код
[guest@localhost tests]$ .ansi t.c -o t
t.c: В функции ‘main’:
t.c:13:5: ошибка: присваивание переменной ‘cp’, доступной только на чтение
[guest@localhost tests]$
0
20.06.2011, 09:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2011, 09:37
Привет! Вот еще темы с ответами:

Не могу разобраться с задачей - C++
Найдите последовательность, содержащую N последовательных натуральных чисел (N=2k+1), таких, что сумма квадратов первых k+1 чисел равна...

Не могу разобраться с программой - C++
Я поступил в Колледж Вычислительной Техники и у нас началось программированиею Сказали поставить Visual C++ 2010, я поставил и теперь не...

Не могу разобраться с классами - C++
InitD3DWindow.h ------------------- class InitD3DWindow { protected: //Initialize the app Window bool InitWindow();

C++ не могу разобраться в нём - C++
Привет всем помогите пожалуйста кто может у меня такая проблема не могу решить задачи по C++, в Программировании я практически нечего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru