我想使用变量创建一个特定大小的数组,但据称唯一的方法是使用指针。
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]);
我想将数组元素分配给类中的私有变量,但当我试图将值分配给私有变量时,程序会崩溃。
如果在编译时知道大小,就可以使用普通数组。如果您只在运行时知道大小,那么您仍然可以使用std::vector
,它比手动分配更容易使用。
无论如何,如果您真的想了解用于数组管理的指针,请记住索引运算符等效于加法和解引用,即ar[i]
与*(ar + i)
相同。换句话说,索引只是在偏移处取消引用。
因此,不需要额外的取消引用。只需在失败的行中去掉星号。
有效代码看起来像
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];