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

问题描述

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)只是指针的大小!!不是指向对象的大小!

时间: 2024-11-08 19:36:37

ios-Byte * 作为字节数组参数,为什么返回只有8位?的相关文章

『0015』 - Solidity Types - 动态字节数组(Dynamically-sized byte array)、固定大小字节数组(Fixed-size byte arrays)、string之间的转换关系

孔壹学院:国内区块链职业教育领先品牌 作者:黎跃春,区块链.高可用架构工程师 微信:liyc1215 QQ群:348924182 博客:http://liyuechun.org 固定大小字节数组(Fixed-size byte arrays)之间的转换 固定大小字节我们可以通过bytes0 ~ bytes32来进行声明,固定大小字节数组的长度不可变,内容不可修改.接下来我们通过下面的代码看看固定大小字节之间的转换关系. pragma solidity ^0.4.4; contract C { b

『0014』 - Solidity Types - 动态大小字节数组(Dynamically-sized byte array)

孔壹学院:国内区块链职业教育领先品牌 作者:黎跃春,区块链.高可用架构工程师 微信:liyc1215 QQ群:348924182 博客:http://liyuechun.org 一.Dynamically-sized byte array string 是一个动态尺寸的UTF-8编码字符串,它其实是一个特殊的可变字节数组,string是引用类型,而非值类型. bytes 动态字节数组,引用类型. 根据经验,在我们不确定字节数据大小的情况下,我们可以使用string或者bytes,而如果我们清楚的

java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做?

问题描述 java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做? java中字符串转换为字节数组请问用什么方法,字符串返回字节数组怎么做? 解决方案 http://blog.csdn.net/shuaihj/article/details/7478773http://blog.csdn.net/abin_gha/article/details/6317850 解决方案二: java中String类有getBytes方法,可以将字符串转成字节数组.字节数组可以直接写入到输出流中,

c#-php socket_read() 接受C# 发送的字节数组 byte[] ,汉字出现乱码。

问题描述 php socket_read() 接受C# 发送的字节数组 byte[] ,汉字出现乱码. 如标题,在C#中,用系统函数 socket.BeginReceive(resultByte, 0, resultByte.Length, System.Net.Sockets.SocketFlags.None, new AsyncCallback(this.OnDataReceived), socket); resultString = Encoding.Unicode.GetString(r

java从输入流中获取数据并返回字节数组示例_Android

复制代码 代码如下: import java.io.ByteArrayOutputStream;import java.io.InputStream;//从输入流中获取数据并以字节数组返回public class StreamTool {    /**     * 从输入流获取数据     * @param inputStream     * @return     * @throws Exception     */    public static byte[] readInputStrea

c# 调用 java web服务 返回的结果字节数组 C#还原String乱码, 有人解决过吗

问题描述 c#调用javaweb服务返回的结果字节数组C#还原String乱码,有人解决过吗 解决方案 解决方案二:目测编码问题解决方案三:不是,应该是不同系统和语言对字节的处理不同解决方案四:你举个例子吧解决方案五:引用2楼xzhoujun的回复: 不是,应该是不同系统和语言对字节的处理不同 呵呵,这有很简单的知识,就是跟语言无关的编码问题.解决方案六:会不会数组元素原本就是"乱码",比如做过编码.加密?解决方案七:一般是编码问题,用soapui工具查看一下参数传送和返回结果情况可以

在VBS中定义字节数组Byte()介绍_vbs

晚上在 QQ 上看到昵称为"乱码"的好友回答了搜搜问问里一个问题: 在VBS中有办法定义字节数组么? 在VBS中有办法定义字节数组么?就是字节子类型数组(VarType是8209的那种)注意不是VB! 但是回答实在是不堪入目,连别人问什么都没搞懂,而且那人居然还满意,真不知道他在想什么. 闲来没事,我来简单回答一下.首先要搞清楚别人在问什么,VBS 是弱类型脚本语言,只有一种数据类型,称为 Variant,但是 Variant 可以进一步分为几种子类型,这里不展开,详见<VBSc

在C#中如何在函数参数中返回结构数组?

函数|数组 头晕脑涨地研究了一天,就为了实现在函数的参数中返回结构数组. 现供大家分享,节省学习时间. 实例:  /// <summary>  /// 用户信息结构  /// </summary>  public struct TUSER  {   public string LoginName;   public string LoginPass;   public string TrueName;   public string EMail;   public int Leve

.net通过webService返回DataSetSurrogate对象用Binary 序列化并Zip压缩后的字节数组,java做客户端怎么写?

问题描述 最近再写一个接口,对方使用.net写的webservice并提供一个方法供我调用,且返回的是DataSetSurrogate对象用Binary序列化并Zip压缩后的字节数组.我用java的wsimport得到且调用这个方法,但是问题来了这个字节数组该怎么解析呢~~请求各位指点~~ 解决方案