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

时间:2014-11-04 17:24:50

标签: c++ arrays pointers element dereference

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

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

我想将数组元素分配给类中的私有变量,但是当我尝试将值赋给私有变量时程序崩溃。

2 个答案:

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