Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > отличие char от char[]


Автор: kLASTER 8.10.2013, 14:05
Доброго времени суток!

Код

const int Len = 40;
struct golf
{
  char fullname[Len];
  int handicap;
}
/////////////////////////////////////////////////
while(play[0].fullname != ' ')
  {
    int i = 0;
    cin >> play[i].fullname >> play[i].handicap;
    i++;
  }


Объясние, пжл, если я убираю размер fullname в структуре, то цикл работает, иначе выдает ошибку.

Автор: Alexeis 8.10.2013, 16:41
char это 1 символ char[] это массив
play[i].fullname - это указатель на первый элемент массива. Сравнивать указатель с ' ' бессмысленно . Указатель никогда не будет равен ' ' поэтому и получается бесконечный цикл. Чтобы понять что не так, нужно понять что должен этот код делать. 

Автор: kLASTER 9.10.2013, 07:08
почему char это один элемент. Я так же могу записать в char слово и буде это тоже массив из букв ( [c][h][a][r][\0] ). 
А указатель, указывает на адрес где хранится массив.
И что не так?

Автор: NoviceF 9.10.2013, 08:32
Цитата(kLASTER @  9.10.2013,  08:08 Найти цитируемый пост)
Я так же могу записать в char слово


Попробуй smile И результат запости сюда.

Автор: NoviceF 9.10.2013, 08:55
Цитата(kLASTER @  9.10.2013,  08:08 Найти цитируемый пост)
указатель, указывает на адрес где хранится массив.
И что не так?

Ты сравниваешь указатель, который есть число(причём относительно большое), с символом ' ' (который, впрочем, тоже есть число, но на порядки меньшее), не видишь в этом никаких проблем? 

Что с чем ты на самом деле хочешь сравнить?

Автор: vol4ek 9.10.2013, 14:12
да и в цикле i всегда 0

Автор: kLASTER 9.10.2013, 16:09
спасибо разобрался! В данном случае play[i].fullname[i];

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)