gpt4 book ai didi

objective-c - 正确使用 sizeof 和 Byte[]

转载 作者:行者123 更新时间:2023-12-02 21:50:55 25 4
gpt4 key购买 nike

我有点力不从心,但我有以下代码(真正的代码当然有道理):

- (NSData*) dataTheseBytes:(Byte[]) bytes {
return [NSData dataWithBytes:bytes length:sizeof(bytes)];
}

编译器警告是

Sizeof on array function parameter will return size of 'Byte *' (aka 'unsigned char *') instead of 'Byte []'

如何消除此警告(或者更确切地说,我对字节数组有什么不理解的地方)?

此外,为什么这段代码没有发生错误?一定与方法签名有关...?

    Byte bytes[3] = { byte1, byte2, byte3 };
NSData *retVal = [NSData dataWithBytes:bytes length:sizeof(bytes)];

最佳答案

当您将 C 数组作为方法或 C 函数参数传递时,它会“衰减”为指向基础类型的指针(即 Byte[] 实际上作为 Byte *< 传递.) 因此被调用的方法/函数不知道数组中有多少个元素。

您还必须传递数组的长度,以便被调用的代码知道您想要什么。这就是为什么 +[NSData dataWithBytes:length:] 有第二个参数。

关于objective-c - 正确使用 sizeof 和 Byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com