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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 15:57   #1
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
Радость Указатель на структуру.Инициализация функцией.

Добрый вечер.Помогите разобраться с коротеньким примером(немного не понятен) по теме указатель на структуру.

EmployeeT* anEmployee = getEmployee();
cout<< anEmployee->salary <<endl;

Предполагается,что функция getEmployee() где то определена,но не ясно,что именно она делает и почему указателю присваивается функция без символа '&'?

Попробовал реализовать простенький пример в Dev-C++,но где то ошибки:

Код:
#include <cstdlib>
#include <iostream>
typedef struct
{
    char firstInitial;
    char lastInitial;
    int salary;
}EmployeeT;

EmployeeT getEmployee();

using namespace std;

int main(int argc, char *argv[])
{
    EmployeeT* anEmployee = getEmployee();  //здесь компл.-р ругается 
    cout<<anEmployee->salary<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
EmployeeT getEmployee()
{
    return salary;
}
Aleksandr_Yanov вне форума Ответить с цитированием
Старый 31.10.2010, 16:20   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Как я понял, предполагается, что ф-ия GetEmployee считывает из входного потока структуру почленно и возвращает ее, т.е. что-то типа:
Код:
EmployeeT getEmployee()
{
    EmployeeT Empl;
    cin >> Empl.firstInitial >> Empl.lastInitial >> Empl.salary;
    return Empl;
}
Но тогда:
Код:
EmployeeT anEmployee = getEmployee();
Либо:
Код:
EmployeeT* getEmployee()
{
    EmployeeT* Empl = new EmployeeT;
    cin >> Empl->firstInitial >> Empl->lastInitial >> Empl->salary;
    return Empl;
}
И
Код:
EmployeeT *anEmployee = getEmployee();
// ...
delete anEmployee;
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 31.10.2010 в 16:33.
Syuf вне форума Ответить с цитированием
Старый 31.10.2010, 16:32   #3
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
По умолчанию

Она как то обрабатывает одно поле структуры через указатель на структуру
cout<<anEmployee->salary<<endl;
Мы же в выходном потоке указываем разыменованный указатель на определённый член структуры.
Не пойму ни как,как эта функция работает?
Aleksandr_Yanov вне форума Ответить с цитированием
Старый 31.10.2010, 16:36   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

あまりに難解発言!!!
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инициализация Aleksey1989 Общие вопросы Delphi 10 11.09.2010 21:50
Инициализация Krumyura Общие вопросы C/C++ 5 20.03.2010 23:37
Инициализация Glut windzor Общие вопросы .NET 2 07.02.2010 12:17
Инициализация DirectX Pedro Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 30.09.2009 21:06