无法转换'&书信电报;括号内的初始值设定项列表>';至';双倍';作为回报 我在C++中写了一个ARDUINO程序,有以下问题:
为什么这样做有效无法转换'&书信电报;括号内的初始值设定项列表>';至';双倍';作为回报 我在C++中写了一个ARDUINO程序,有以下问题:,c++,arduino,C++,Arduino,为什么这样做有效 double* getArray() { double p, r, y; double ret[3] = {p, r, y}; return ret; } 但事实并非如此 double* getArray() { double p, r, y; return {p, r, y}; } 两个代码块都不能工作 第一种方法进行编译,但在返回指向不再存在的数组的指针时引入未定义的行为。有关此问题的详细答案,请参见 第二个代码块编译失败,因为{p,r,y}不是
double* getArray() {
double p, r, y;
double ret[3] = {p, r, y};
return ret;
}
但事实并非如此
double* getArray() {
double p, r, y;
return {p, r, y};
}
两个代码块都不能工作 第一种方法进行编译,但在返回指向不再存在的数组的指针时引入未定义的行为。有关此问题的详细答案,请参见 第二个代码块编译失败,因为
{p,r,y}
不是double*
的有效初始值设定项
这里真正需要的是std::vector
、std::array
或std::unique\u ptr
。如果您不能使用其中任何一个,那么您需要动态地创建数组,然后您需要记住在不使用该数组时删除该数组
double* getArray() {
double * arr = new double[3]{1,2,3};
return arr;
}
int main() {
double* foo = getArray();
// use array here
delete [] foo;
}
两个代码块都不能工作 第一种方法进行编译,但在返回指向不再存在的数组的指针时引入未定义的行为。有关此问题的详细答案,请参见 第二个代码块编译失败,因为
{p,r,y}
不是double*
的有效初始值设定项
这里真正需要的是std::vector
、std::array
或std::unique\u ptr
。如果您不能使用其中任何一个,那么您需要动态地创建数组,然后您需要记住在不使用该数组时删除该数组
double* getArray() {
double * arr = new double[3]{1,2,3};
return arr;
}
int main() {
double* foo = getArray();
// use array here
delete [] foo;
}
不相关,但第一个示例是未定义的行为。不相关,但第一个示例是未定义的行为。我认为
delete[]
特定于数组指针,而justdelete
用于其他所有操作?@Jacksonkr:delete[]
特定于new[]
,而delete
是特定于new
的。我认为delete[]
是特定于数组指针的,而justdelete
是用于其他一切的?@Jacksonkr:delete[]
是特定于new[]
的。