将 uint8_t 数组传递给方法
Posted
技术标签:
【中文标题】将 uint8_t 数组传递给方法【英文标题】:Pass uint8_t array to method 【发布时间】:2015-06-03 11:30:58 【问题描述】:我有四个uint8_t
数组:
uint8_t arrayOne[12] = 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x01,0xC1,0x00,0x01 ;
uint8_t arrayTwo[12] = 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x4E,0x2D,0x00,0x0C ;
uint8_t arrayThree[12] = 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x01,0xF3,0x00,0x01 ;
uint8_t arrayFour[12] = 0x00,0x01,0x00,0x00,0x00,0x06,0xFE,0x03,0x20,0x04,0x00,0x01 ;
我已将它们添加到数组中:
uint8_t *theArray[] = arrayOne,arrayTwo,arrayThree,arrayFour ;
现在我想把这个数组传递给一个方法,例如:
[self theMethod:theArray];
到:
-(void)theMethod:(uint8_t *)pointersArray[]
...
...
将数组指向 -(void)theMethod... 中的方法的正确方法是什么?
【问题讨论】:
“我已将它们添加到数组中”。不,你没有。uint8_t *theArray = arrayOne,arrayTwo,arrayThree,arrayFour ;
不是有效的 C 并且不会编译。发布您正在使用的实际代码。
这是一个 Objective-C。它会编译。
好的,为你去掉了C标签。
有效的 C 是有效的 Objective-C。问题的第一部分是 C。
@Roo uint8_t *theArray
应该是 uint8_t *theArray[]
【参考方案1】:
这一行:
uint8_t *theArray = arrayOne,arrayTwo,arrayThree,arrayFour ;
实际上是创建一个数组,其中填充了 指向您的数组的指针,这些数组转换为 uint8_t 值。我不认为这是你想要的。
所以首先(注意双指针):
uint8_t *theArray[] = arrayOne,arrayTwo,arrayThree,arrayFour ;
那么你的 ObjC 方法就变成了:
-(void)theMethod:(uint8_t **)pointersArray
【讨论】:
那我怎样才能在那个方法中得到“uint8_t arrayOne[12]”呢?uint8_t *arrayOne = pointersArray[0];
然后你可以做arrayOne[11]
或者你需要的任何索引。【参考方案2】:
声明你的方法来接收指向数组指针的指针
-(void)theMethod:(uint8_t **)pointersArray
...
...
通过像这样传递方法来调用方法
[self theMethod:&theArray];
【讨论】:
以上是关于将 uint8_t 数组传递给方法的主要内容,如果未能解决你的问题,请参考以下文章
将指向 uint16_t 的指针传递给需要 C 中 uint8_t[] 数组的子例程 - 如何?
将 int16_t 变量转换为 uint8_t 以传递给函数
将 unsigned char 数组转换为 uint8_t 数组?