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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2009, 12:21   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию Маленькое уточнение

Здравсвуйте программисты! подскажите пожалуйста, правильно ли я понял этот код.

Код:
mixail *robot;

//Выделение памяти под новую структуру
robot = new mixail;

robot->Fam = "Иванов";
robot->Nam = "Иван";
robot->Par = "Иванович";
robot->Year = 1970;
Тоесть я создаю указатель robot на структуру mixail и присваиваю указателю robot адресс струткуры mixail, если чо не так,поправьте пожалуйста
prikolist вне форума Ответить с цитированием
Старый 27.04.2009, 12:35   #2
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

если структура выглядит так:

Код:
typedef struct{
    char *Fam;
    char *Nam;
    char *Par;
    int Year;
} mixail;
то все правильно.
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума Ответить с цитированием
Старый 27.04.2009, 13:03   #3
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Но,если написать,вот такое ниже,тогда кампиляция не произойдёт. Останавливается на robot = курсор,и дальше не компилируется.
Ещё, typedef , он что, этим вырпажением меняет тип указателя mixail, на тип структура?
Код:

typedef struct{
    char *Fam;
    char *Nam;
    char *Par;
    int Year;
} mixail;

mixail *robot;

//Выделение памяти под новую структуру
robot = new mixail;

robot->Fam = "Иванов";
robot->Nam = "Иван";
robot->Par = "Иванович";
robot->Year = 1970;

Последний раз редактировалось prikolist; 27.04.2009 в 13:06.
prikolist вне форума Ответить с цитированием
Старый 27.04.2009, 13:35   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

"Иванов" - это "char const *", а Вы это копируете в "char *".
Да и вообще так со строками работать нельзя. Используйте класс std::string или функцию strdup для копирования строк с автоматическим выделением памяти
pu4koff вне форума Ответить с цитированием
Старый 27.04.2009, 16:20   #5
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

typedef задает тип данных mixail
robot указывает на объект этого типа.
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уточнение корней при решении слау? RealNt Помощь студентам 3 29.10.2007 16:17