C++ 指向数组

C++ 指向数组,c++,arrays,pointers,C++,Arrays,Pointers,如何创建指向数组的指针 std::string string_array[5 /*<-an arbitrary length determined by a function*/]; std::string** array_pointer = &string_array; std::string string\u数组[5/*您只需要一个*,即 std::string* array_pointer = string_array; 数组会退化为指针,所以你根本不需要符号。它们与指

如何创建指向数组的指针

std::string string_array[5 /*<-an arbitrary length determined by a function*/];
std::string** array_pointer = &string_array;

std::string string\u数组[5/*您只需要一个
*
,即

 std::string* array_pointer = string_array;
数组会退化为指针,所以你根本不需要符号。它们与指针的关系有时会令人困惑,但在很多地方(如这里),它们只是可以互换的

你也可以做一些实际上是指向数组的指针的事情,但我认为这不是你想要的

 std::string (*array_pointer)[5] = &string_array;

这里您需要知道长度。实际生成的机器语言代码是相同的,但编译器会为您执行一些更严格的类型检查。例如,如果您将上面的5替换为4,您将得到一个编译错误。

使用字符串向量来避免这种垃圾。
std::vector*
easy peasy“因为一个数组本质上是一个指针”,不幸的是,不是真的。- 1不是真正的代码。错误消息说,真正的代码是使用一个可变长度数组,它是一个C99的特性,用C++提供的C++语言扩展。“,显示的代码,被编译并产生错误消息。不是这样。感谢@NeilKirk,该解决方案比我尝试的要好得多。感谢@toth和澄清数组的工作方式,这很有帮助。@chris,是的,这就是我的意思,谢谢,编辑修复。