如何取消引用数组元素(C++)

How to dereference an array element (C++)

本文关键字:引用 数组元素 C++ 取消 何取消      更新时间:2023-10-16

我想使用变量创建一个特定大小的数组,但据称唯一的方法是使用指针。

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];