繁体   English   中英

如何在C ++中将数组声明为参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM