Byte * 作为字节数组参数,为什么返回只有8位?

刚接触oc,遇到一个问题,请明白的讲讲道理。
示例代码如下:
1. 在CMData类里声明了一个字节数组的属性:

 @property(nonatomic, assign) Byte * commandData;
  1. 在其他类中测试调用:
 const Byte buffer[] = {1,2,3,4,5,6,7,8,9,10};
 CMData * data = [[CMData alloc] init];
data.commandData = buffer;
  1. 打印结果
 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个。
对指针还是不太了解,请大家解答下,谢谢。

你sizeof的是指针,所以返回的是指针的空间,32位是4,64位是8

sizeof是类型的空间,不是数组中实际的元素个数

参数或者返回值都会退化为指针,sizeof(p)只是指针的大小!!不是指向对象的大小!