我试图创建一个字符串数组,并将它们与链接列表连接起来。问题是我们只能使用数组。教练说我们不能使用模板,矢量等。这些是我发现能够做到这一点的唯一方法。我不认为这甚至是一个链表,他希望我们的数组能够在并行处理而不是指向下一个元素。
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string names [4] = {"Dick", "Harry", "Sam", "Tom"};
string *nameptr[4];
for(int x = 0; x < 4; x++)
{
*nameptr[x] = names[x];
cout << nameptr[x] << " ";
cout << &nameptr[x] << endl;
}
}
这段代码有什么问题?我错过了什么?
我迷失了,如果有人能对此有所了解,那就太棒了。
答案 0 :(得分:4)
你的问题不是&#39;清除,但要使代码运行。
尝试更新
*nameptr[x] = names[x];
到
nameptr[x] = &names[x];
答案 1 :(得分:3)
string names[4] = {"Dick", "Harry", "Sam", "Tom"};
是std::string
个对象的数组。 string *nameptr[4];
是指向std::string
个对象的指针数组。
要初始化指针,您需要指定它指向它的地址:nameptr[x] = &names[x];
Dereference operator(*
)。例如,打印nameptr[x]
指向的字符串:std::cout << *nameptr[x];
解释为什么你的程序“已经停止工作”:你已经声明了string *nameptr[4];
,即指针数组,但你没有初始化它。然后在循环中,您尝试执行*nameptr[x] = names[x];
,这意味着“获取names[x]
对象并替换nameptr[x]
指向它的对象”。您正在取消引用尚未初始化的指针,这会导致未定义的行为