首页 > 解决方案 > (C/C++) 在同一行初始化并返回数组

问题描述

我想知道如何使用 c/c++ 在同一行上初始化和返回一个数组。

我的直觉说语法应该看起来像这样:return (int8_t*) {hours, minutes, seconds};

我对么?演员是强制性的吗?或者有另一种/更好的方法吗?

编辑:我问这个是因为我现在无法测试代码。有几天我不会在电脑前。

回答:

标签: c++arraysccastingreturn

解决方案


这不会像您期望的那样工作。

您尝试执行的操作的确切语法是:

return (int8_t []){hours, minutes, seconds};

它创建了一个数组类型的复合文字。但是,此文字具有封闭范围的生命周期。因此,当函数返回时,返回的指针现在指向无效内存,并试图取消引用该指针调用未定义的行为

您需要动态分配内存,然后分配数组的每个成员:

int8_t *p = malloc(3 * sizeof(int8_t));
p[0] = hours;
p[1] = minutes;
p[2] = seconds;
return p;

推荐阅读