【问题标题】:How to pass an array in by reference to a function?如何通过引用函数来传递数组?
【发布时间】:2009-05-12 16:36:13
【问题描述】:

我有一个函数,它传递了一个数组指针来修改数组中的内容:

  • (void) arrayFunction:(Byte[])targetarray { // 对目标数组做一些事情 }

这是一个字节类型的数组,但我认为我没有把正确的东西放在圆括号中。它应该是什么而不是(Byte [])?可能有几个不同大小的数组传递给这个函数

提前致谢!

【问题讨论】:

    标签: c objective-c arrays


    【解决方案1】:

    如果它是一个普通的旧数组,我会这样做:

    (void)arrayFunction:(Byte*)targetarray
    

    或者,更“OO-ish”,使用 NSData 而不是字节数组:

    (void)arrayFunction:(NSData*)targetarray
    

    【讨论】:

    • 不要忘记将数组大小作为参数传递以避免缓冲区溢出!
    • 在大多数情况下传递一个 NSData 实例是多余的,除非你打算在之后用它做其他事情,这将受益于 NSData 包装器(即将它放入字典、NSUserDefaults、NSArchiver 等) .否则,只需传递 C 样式数组。为此,只需传递字节 ,但正如亚当指出的那样,您应该真正使用 - (void)arrayFunction:(Byte)targetArray length:(NSUInteger)length;
    【解决方案2】:

    看起来您使用的是普通的 C 数组。请记住,数组指针只是指向数组中第一个元素的指针。您不会将“整个数组”作为引用传递,您只需传递索引 0 处的指针。

    如果您要传递数组,您应该将参数定义为指针Byte*,因为当您传递一个简单的 C 数组时,它实际上就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多