[英]How do declare an array in C++ as a parameter?
我在我的iOS项目中使用专有代码,并且我只能访问项目的头文件。 如何在C ++中声明数组,以便在我打电话时返回数组?
这是头文件方法
short WI_GetIDsFromList(int32_t module, int32_t *idsArray, uint32_t *count);
您如何声明一个数组来接收in32_t的数组? 进行此调用时,我不断收到returnIdsArray的参数错误? 它的计数效果很好吗? 我试图将其变成指针,但没有用?
//Array of ID's
int32_t returnedIdsArray[] = {};
// Array of ID's count
uint32_t count;
rc += WI_GetIDsFromList(mod, returnedIdsArray, &count);
另一个例子
short dpCount;
//Get number of data points from the device
WI_GetDatapointCount(modIDHDS, &dpCount);
//dpCount now has returned value of method WI_GetDatapointCount
NSLog@"%d", int(dpCount);
我猜您想做的是让函数输出一组int
值,而在编译时长度是未知的。
在C ++中,数组的大小固定,必须在编译时知道。 在C ++中,“运行时大小的数组”的概念称为vector
。
同样,将返回值用于返回的值更自然。 您的代码可能如下所示:
std::vector<int> WI_GetIDsFromList(int32_t mod);
调用代码可以是:
auto values = WI_GetIDsFromList(mod);
我认为Mochi的问题是如何声明适合头文件中给出的功能的数组。 如果我理解正确,他对以数组为参数的函数没有任何影响。
你试过了吗:
int32_t returnedIdsArray[MaximumExpectedIds];
API中可能还有一个函数,可为您提供可用于确定数组大小的ID数。
您不能使用C或C ++传递数组,因为它们将始终衰减为指向第一个元素的指针。
但是,您可以将引用传递给数组。 它保留其数组类型而不是衰减到指针,因此sizeof()将返回数组的实际大小,而不是sizeof指针,依此类推。
void f(char(&charArray)[30])
{
}
语法非常丑陋。 类型别名可以帮助:
using CharArray30 = char(&)[30];
void f(CharArray30 charArray)
{
}
等等。但是有限制。 例如,您不能传递其他大小的数组。
如果您需要函数使用各种大小,则可以使用带有非类型参数的函数模板作为大小:
template <size_t SIZE>
void f(int32_t module, int32_t(&idArray)[SIZE])
{
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.