向字符串指针添加字符串 在C++中可以向字符串指针添加字符串吗? 不起作用示例: String* temp; temp[0] = "string";

向字符串指针添加字符串 在C++中可以向字符串指针添加字符串吗? 不起作用示例: String* temp; temp[0] = "string";,c++,arrays,string,arduino,C++,Arrays,String,Arduino,就像在以下情况下一样: String temp[3]; temp[0] = "string"; 在建议只使用普通数组或将其复制到其他固定数组之前,需要在函数中返回字符串指针。例如 String* SomeClass::toArray(String str) 我也愿意接受其他建议,如何从这个函数返回数组。不考虑什么是String这个代码片段 String* temp; temp[0] = "string"; String temp[3]; temp[0] = "string"; 如果编译,

就像在以下情况下一样:

String temp[3];
temp[0] = "string";
在建议只使用普通数组或将其复制到其他固定数组之前,需要在函数中返回字符串指针。例如

String* SomeClass::toArray(String str)

我也愿意接受其他建议,如何从这个函数返回数组。

不考虑什么是
String
这个代码片段

String* temp;
temp[0] = "string";
String temp[3];
temp[0] = "string";
如果编译,则会导致未定义的行为,因为指针temp具有不确定的值(如果是局部变量)或NULL,并且您可能无法解除其限制

假设此代码段

String* temp;
temp[0] = "string";
String temp[3];
temp[0] = "string";
是否有效?例如,您可以编写

String* other_temp = temp;
other_temp[0] = "string";

您不能向指针添加任何内容,指针只是指向一些内存。 首先需要有一些实例,如第二个示例
stringtemp[3]
您正在创建
字符串的三个实例

所以<代码>字符串温度
将创建
String
的本地实例,然后使用
String*temptr=&temp,但我不明白你为什么想要这样,因为你可以按原样使用
temp
。。。比如
temp.clear()
或类
String
具有的任何函数(请参见其API)


编辑关于返回字符串指针

这是一种不幸的C++ API设计。那么谁将拥有该实例的内存呢

例如:

String* SomeClass::toArray(String str) {
    String result;
    // BUG, DO NOT DO THIS!
    return &result; // returns pointer to local stack variable
    // which gets released *here*, invalidating the pointer
}

String* SomeClass::toArray(String str) {
    String *result = new String;
    return result; // returns pointer to global heap
    // now if the upper layer of code will not call "delete" on it
    // you have memory leak
}
顺便说一句,从“toArray”名称看,您需要的是字符串实例数组,而不是字符串指针。因此,应该将函数定义为
String[]SomeClass::toArray(String str)
,仍然存在相同的内存所有权问题


我要做的是不返回数组。 可能
void SomeClass::toArray(const String&str,std::vector&array)
,将数据填充到
数组中


我不知道在ARDUIO上使用C++的数量,如果STD::vector是好的,或者不是,但是有一个字符串类感觉像向量也可以,尤其是如果你通过传递字符串的副本实例而不是引用来浪费你的栈。(除非字符串< /COD>是一些代码宏> TyPulf,请不要告诉我……即使是C++,也可以用低内存占用的方式写,如果不避免分配C++类的临时实例,就不必在任何地方硬排列数组。

我想问同样的问题。但正如你看到的,这个问题有一个arduino标签。String是基于C或C++的ARDUINO语言的对象,但与它们中的任何一个并不完全相同。