【发布时间】:2018-11-27 17:05:17
【问题描述】:
所以这是我的问题。
我有一个具有一些属性的结构:
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;
}
这可能吗?
【问题讨论】:
-
您可能希望避免复制循环;很遗憾,你的愿望不会实现。仅传递结构数组的
propertyN元素没有明智的、可支持的方式。但是不要忘记,传递一个数组很便宜。只有一个指针被传递给函数。 -
那些
const成员意味着您无法使用malloc()有效地动态分配您的结构——您可以使用calloc(),但值将为零并且无法更改。这可能不是你想要的。