我想使用变量创建一个特定大小的数组,但据称唯一的方法就是使用指针。
int size = 5;
string* myArray = new string[size];
我现在想要将此数组中的元素分配给另一个变量,我相信这只能通过解除引用来实现。以下代码行不起作用。我该如何解决?
string line;
myArray[0] = "Hello";
line = *myArray[0];
编辑:
我只是想澄清一下:使用普通" myArray [0]"代码也不起作用。它会编译,但会导致崩溃。这里有一些关于我想做什么的更具体的代码。
void MyClass::setLine(string line)
{
myLine = line; /*This is a private variable in MyClass*/
}
///////////////
MyClass* elements = new MyClass[size];
elements[0].setLine(myArray[0]);
我想将数组元素分配给类中的私有变量,但是当我尝试将值赋给私有变量时程序崩溃。
答案 0 :(得分:3)
如果您在编译时知道大小,则可以使用普通数组。如果您只知道运行时的大小,您仍然可以使用std::vector
,这比手动分配更容易使用。
无论如何,如果你真的想学习数组管理的指针,请记住索引运算符等同于加法和解除引用,即ar[i]
与*(ar + i)
相同。换句话说,索引只是在偏移处解除引用。
因此,不需要额外的解引用。只需将星号放在失败的行中即可。
答案 1 :(得分:2)
有效代码看起来像
string line;
myArray[0] = "Hello";
line = myArray[0];
顺便说一下,如果要添加或删除集合中的元素,可以使用类std::vector
而不是数组。
例如
std::vector<std::string> myArray;
myArrray.reserve( 5 );
myArray.push_back( "Hello" );
line = myArray[0];