开发者社区> 问答> 正文

请问Byte * 作为字节数组参数,为何返回只有8位?

刚接触oc,遇到一个问题,请明白的讲讲道理。
示例代码如下:

  1. 在CMData类里声明了一个字节数组的属性:
    @property(nonatomic, assign) Byte * commandData;

在其他类中测试调用:

 const Byte buffer[] = {1,2,3,4,5,6,7,8,9,10};

 CMData * data = [[CMData alloc] init];
data.commandData = buffer;

打印结果
NSLog(@"-->%@", [Helper ByteArrayToString:data.commandData andWith:sizeof(data.commandData)]);

结果是只有buffer中的前8个:
1,2,3,4,5,6,7,8
这种情况,不管是函数传参数还是返回值都是这样,这是什么原因?
但如果在声明完const Byte buffer[] = {1,2,3,4,5,6,7,8,9,10};后,直接sizeof buffer 是 10个。
对指针还是不太了解

展开
收起
爵霸 2016-03-17 08:55:01 2309 0
2 条回答
写回答
取消 提交回答
  • 宇宙虽有其起源,却没有终结。无限。 星球虽也有起源,却因其自身之力走向毁灭。有限。

    commonData是执行对象的指针,所以sizeof返回的指针的大小,64位下是8(个byte),
    你可以再加一个 int size的属性用来记录长度,在ByteArrayToString这个方法的第二个参数传入这个size属性既可。

    2019-07-17 19:04:22
    赞同 展开评论 打赏
  • 你sizeof的是指针,所以返回的是指针的空间,32位是4,64位是8

    2019-07-17 19:04:22
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载