C++动态数组输入问题 帮下忙,要疯掉了

来源:百度知道 编辑:UC知道 时间:2024/05/24 09:34:53
#include <iostream>
#include <string>
#include <cstddef>
using namespace std;

int main()
{
cout<<"输入图书的数量:\n";
int n;
cin>>n;
string* p=new string[n];
cout<<"输入书名:\n";
for(string* q=p;q!=p+n;++q)
getline(cin,*q);
cout<<"输入要查找的书名:";
string s0;
getline(cin,s0);
int flag=0;
for(string* k=p;k!=p+n;++k)
if(s0==*k) flag=1;
if(flag==1) cout<<"该书所处位置:"<<k-p<<endl;
else cout<<"cannot find.\n";
return 0;
}

为什么P指向的空间没有被用到?
为什么P指向的空间是空的,P+1开始才保存输入的值

你可以参考一下2008年下半年的国家软考的程序员下午考试的第五个题

for(string* q=p;q!=p+n;++q)
将的值赋给了指针q 通过q对数组进行访问 指针P用来保存数组的首地址 也就是保存数组

for(string* q=p;q!=p+n;++q)
{
...
}
这里的指针q,在for循环后即被程序自动释放,后面的for循环也一样,根本没有在指针p指向的数组里进行读写。
还有,建议你去读一本叫《高质量C/C++编程》的书,规范下格式