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

tydedef - C++

Восстановить пароль Регистрация
 
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
02.07.2013, 18:42     tydedef #1
typedef char* (*Func)();
объясните что значит.
глупо думать что (*Func)() синоним char*..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
02.07.2013, 18:53     tydedef #2
имя типа указатель на функцию
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
02.07.2013, 18:55     tydedef #3
C++
1
char* (*)()
Указатель на функцию с сигнатурой char*(void).
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
02.07.2013, 19:10  [ТС]     tydedef #4
Цитата Сообщение от Герц Посмотреть сообщение
C++
1
char* (*)()
Указатель на функцию с сигнатурой char*(void).
(*x) синоним char(*x)()?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.07.2013, 19:17     tydedef #5
Func - это имя типа, "указатель на функцию, возвращающую char* ". При чём тут синоним?
iv-a
 Аватар для iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
02.07.2013, 19:33     tydedef #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
"указатель на функцию, возвращающую char*
и эта функция ничего не принимает. void

Добавлено через 51 секунду
правильно?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6167 / 2896 / 282
Регистрация: 04.12.2011
Сообщений: 7,702
Записей в блоге: 3
02.07.2013, 19:38     tydedef #7
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
#include <iostream>
using namespace std;
char ch[]={'a','b','c','\0'};
 
char* foo(){
return &ch[0];
}
 
int main()
{
typedef int massOfDec[3];
massOfDec mass={1,2,3};//аналогично объявлению int mass[3]={1,2,3};
cout<<mass[2]<<endl;//3
//то есть "аргументом" typedef является объявление, в нашем примере: int massOfDec[3];
//при этом имя в объявлении используется как тип (который был бы объявлен без typedef) для дальнейших объявлении!
//поэтому интерпритация та же, что и в обычном обявлении: изнутри (от имени) вправо, а затем влево:
typedef char* (*Func)();//скобки, чтобы не получить функцию возвращающую char**
//typedef - обявляется: изнутри - имя Func, как указатель "(* имя)", на: вправо - функцию "()", возвращающую: влево от изнутри)) - указатель на символ "char* "
Func ptr_To_Fun;//обявлен указатель типа Func, то есть того же типа которым был бы Func будучи объявленным без typedef
ptr_To_Fun=foo;//foo - возвращает тот же тип (имена функций и масcивов преобразуются в указатели) 
cout<<ptr_To_Fun<<endl;//адрес: значение указателя на foo()
cout<<ptr_To_Fun()<<endl;//abc
std::cout<<std::endl;
    system("pause");
    return 0;
}
Yandex
Объявления
02.07.2013, 19:38     tydedef
Ответ Создать тему
Опции темы

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