如何取消引用数组元素(C++)
How to dereference an array element (C++)
我想使用变量创建一个特定大小的数组,但据称唯一的方法是使用指针。
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];
相关文章:
- 数组元素打印的递归方法
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 为什么使用数组元素查找最大数字的程序不起作用?
- 数组元素更改值?
- 如何访问宏中定义的数组元素
- 将数组元素递增 1
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在 std::map 中插入数组元素
- 如何通过引用对用户定义对象的类型集 (STL) 的数组元素进行增强迭代?
- 对于Boost.Propertytree,有没有办法使用JSON点表示法来引用数组元素?
- 如何避免意外地按值而不是按引用获取数组元素
- 如果我从未实际使用该引用,那么引用越界数组元素是否安全
- 如何在 c++ 中通过引用传递数组元素
- C++:在重载 ostream >> 时引用 2D 数组元素时崩溃
- 如何取消引用数组元素(C++)
- 数组元素和指向它们的指针引用
- 返回数组元素时,非const引用的初始化无效
- 当函数参数常量引用 T 时,为什么 T 的模板参数推导'skips'数组元素的恒定性?