首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS Byte* 指針 sizeof 返回 8:指針大小與數組退化區別

     編輯:程式設計綜合問答

現象

`Byte *commandData` 指向 `Byte buffer[10]`,`sizeof(commandData)` 返回 8 (64 位) 或 4 (32 位),而非 10。

原因

`sizeof` 作用於**指針變量本身**,返回指針佔用字節數(地址總線寬度)。數組名 `buffer` 在傳遞給函數/賦值給指針時**退化為指針**,失去長度信息。

正確做法

  1. **結構體封裝長度**:
    `typedef struct { Byte *data; NSUInteger len; } ByteBuffer;`
  2. **Objective-C 使用 `NSData`/`NSMutableData`**:
    `@property (copy) NSData *commandData;`
    `self.commandData = [NSData dataWithBytes:buffer length:10];`
  3. **C++ 使用 `std::vector` 或 `std::span` (C++20)**。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved