Aaron学习笔记

少壮不努力,长大没饭吃!
posts - 4, comments - 13, trackbacks - 0, articles - 37

一个简单的vector问题

Posted on 2009-08-18 20:09 赞劲小子 阅读(221) 评论(0)  编辑 收藏 引用 所属分类: 日常练习
int main(){
    vector
<string*> vec;
    
string str;
    
string *ptr = NULL;
    
while(cin >> str)
    
{
        ptr 
= &str;
        vec.push_back(ptr);
        cout 
<< *ptr << "__" << endl; 
        
/*
         *    在循环中*ptr有值
         
*/

    }

    
/*
    *    (1)为什么在while循环后,*ptr就是空的了?(2)vector中也没有任何变量呢?(3)while循环后str也是空的,str应该保存输入的最后一个字符串啊
    
*/

    cout 
<< str << endl;
    cout 
<< *ptr << "++" << endl;
    vector
<string *>::iterator iter = vec.begin();
    
while(iter != vec.end())
    
{
        cout 
<< **iter << endl;         iter++;
    }

    
return 0;
}

解答:
以下代码测试发现:
1)循环退出之后,*ptr并不是空值,而是最后退出循环时输入的"exit"
2) vector中没有任何变量?测试发现vector中存在变量,和输入的次数一样,不过值都改变为最后一次输入的值"exit",这也很明显,因为指针都是string str的内存地址。
3)str当然不是空的,是最后一个字符串的值"exit" ,虽然输入最后一个str时,while循环并没有执行,但是ptr仍然指向的是str的地址,所以是"exit"了
Windows XP + VS2005...

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理