所以这是我的问题。
我有一个具有一些属性的结构:
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/