Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > зачем столько указателей ?


Автор: sts 20.10.2005, 21:37
помогите разобрать код:
Код

#include <iostream.h>
#include <string.h>
class Student
{
public:
Student (char *pName);
Student () ;
static Student* findName(char *pName);
protected:
static Student *pFirst;
Student *pNext;
char name[40];
};
Student* Student::pFirst = 0;

Student* Student::findName(char *pName)
f

for (Student *pS = pFirst; pS; pS = pS->pN
{
.
if (strcmp(pS->name, pName) == 0)
{

return pS;
}

}

return (Student*)0;
}
int main(int argcs, char* pArgs[])
{
Student si("Randy");
Student s2("Jenny");
Student s3("Kinsey");
Student *pS = Student::findName("Jenny");
return 0;}


я что-то не совсем понимаю зачем здесь столько указателей . Все переменные указатели , а где сами объекты? И что значит int argcs, char* pArgs[] ?

Автор: cardinal 20.10.2005, 21:39
Цитата(sts @ 20.10.2005, 19:37)
зачем здесь столько указателей

Поконкретней спроси. В виде кокретных строк...
Цитата(sts @ 20.10.2005, 19:37)
int argcs, char* pArgs[]

Это параметры из коммандной строки...

Автор: sts 20.10.2005, 22:05
Трудно быть конкретным когда не понимаешь как работает код. Ну например такой момент
static Student *pFirst;
указатель типа Student , - указатель на что?
И дальше
*pS = pFirst;
Это что указатель на указатель ?
Да и ещё как работает вот это
for (Student *pS = pFirst; pS; pS = pS->pNext)

Автор: BreakPointMAN 20.10.2005, 22:55
Цитата(sts @ 20.10.2005, 22:05)
static Student *pFirst;
указатель типа Student , - указатель на что?

указатель на объект класса Student - на что же еще?..
Цитата(sts @ 20.10.2005, 22:05)
И дальше
*pS = pFirst;
Это что указатель на указатель ?

нет, это опять-таки, указатель на объект класса Student, инициализируется значением указателя pFirst, т.е. после этого присвоения и pS, и pFirst будут указывать на один и тот же объект
Цитата(sts @ 20.10.2005, 22:05)
Да и ещё как работает вот это
for (Student *pS = pFirst; pS; pS = pS->pNext)

ну, это... насколько можно судить по коду... в цикле перебираются все объекты класса Student, начиная с того, на который указывал pFirst, до тех пор, пока указатель pS не будет NULL. Это же вроде как односвязный список. В классе Student есть указатель pNext, он должен быть проинициализирован адресом следующего объекта списка, а у последнего объекта списка быть равным NULL

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