有个开源码,里面用到了STD::list,实在没看懂,程序调用到这里总会有问题,但又抓不到问题在哪里

一个函数内部有一段这样的代码:
std::listCommandLineInterface::Client::iterator it = begin();

其中CommandLineInterface::Client也是一个类,CommandLineInterface是一个类,里面又定义了一个类Client

然后下面有这样的语句(其中address是一个入参):
for (;it != end(); ++it)
{
if (it->Address() == address)
{
it->Seen();
return &(*it);
}
}

我的疑问在于:
std::list< >::iterator it 定义的这个it,看样子是个指针吗?

那个begin()和end()是独立于it之外的函数?

这个函数每次运行都会定义一下这个it,难道第一次定义后,之后的每次都不会重复定义了吗?否则后面的那些比较就变得没意义了啊

这段代码没看明白,单步跟踪进去也没看明白,但是整个系统执行到这里,总是得不到想要的,退出这个程序后就走到失败的里面去了

http://blog.csdn.net/hackbuteer1/article/details/7726116