gpt4 book ai didi

c - 如何将结构数组的属性作为参数发送给 C 中的函数?

转载 作者:太空狗 更新时间:2023-10-29 16:05:25 25 4
gpt4 key购买 nike

所以这是我的问题。

我有一个具有一些属性的结构:

struct foo {
const uint8_t propertyA;
int propertyB;
const int propertyC;
typeX propertyD;
typeY propertyE;
};

然后我创建一个这个结构的数组,因为我必须表示对象 foo 的多个实例:

const int foosQuantity = 8;
struct foo foos[foosQuantity] =
{{ .propertyA=0b11001100, .propertyB=0, .propertyC=140, ...},
{ .propertyA=0b11001000, .propertyB=0, .propertyC=150 ...},

//*** foosQuantity-3 MORE TIMES ***//

{ .propertyA=0b11001000, .propertyB=0, .propertyC=150 ...}}

到目前为止,一切似乎都正常。但是,我还没有想出如何将一种属性的数组发送给函数。例如,我将此函数编写在一个外部库中,该库采用一组属性 A:

void myFunc(const uint8_t *propertyAs, sizeArray){

//*** DO STUFF ***//

}

而且我想直接发送我的结构的属性,而不必使用遍历结构数组并复制元素的 for 循环。

int main(){

//*** STUFF ***//

myFunc(foos.propertyA, foosQuantity);

//*** MORE STUFF ***//

return 0;
}

这可能吗?

最佳答案

如果整个结构数组已经存在于你的程序内存中,你不会比仅仅传递指向数组开头的指针、数组的长度(以元素为单位)和迭代 propertyA 成员更高效数组的:

void bar(struct foo *p, size_t len)
{
size_t i;
for(i = 0; i < len; i++)
{
dosomething(p[i].propertyA);
}
}

如果您被分配的规范限制为只允许将 propertyA 数组(即 uint8_t )传递给您的函数,您必须将它们复制出 struct foo 数组;没有办法解决这个问题。

关于c - 如何将结构数组的属性作为参数发送给 C 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53504694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com