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

如何将结构数组的属性作为参数发送到C中的函数?,第1张

概述所以这是我的问题. 我有一个具有一些属性的结构: struct foo { const uint8_t propertyA; int propertyB; const int propertyC; typeX propertyD; typeY propertyE;}; 然后我创建了这个结构的数组,因为我必须代表对象foo的多个实例: const int foosQuantit 所以这是我的问题.

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

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,.propertyC=150 ...},//*** foosQuantity-3 MORE TIMES ***//   { .propertyA=0b11001000,.propertyC=150 ...}}

到现在为止,一切似乎都有效.但是,我还没有想过如何将一种类型的属性数组发送到函数.例如,我把这个函数写在一个extern库中,它带有一个属性数组A:

voID myFunc(const uint8_t *propertyAs,sizeArray){    //*** DO STUFF ***//}

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

int main(){  //*** STUFF ***//  myFunc(foos.propertyA,foosQuantity);   //*** MORE STUFF ***//  return 0;}

这可能吗?

解决方法 如果整个struct数组已经存在于程序的内存中,那么你不会比仅仅将指针传递给数组的开头,数组的长度(在元素中)以及迭代在数组的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中的函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1212249.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存