Objective C中的地址运算符

时间:2011-05-15 12:55:50

标签: objective-c

我正在将cpp代码移植到Objective C。

cpp

void create(INT32u &uLen)
{
 sprintf((char*)ps[uLen],"%x%d",val,val1);
}

目标C

-(void)create:(uint32_t**)uLen
{
 sprintf((char*)ps[uLen],"%x%d",val,val1);
}

这给了我一个错误,因为索引只取整数值。我如何传递变量。传递的原始变量也应该随着变量uLen所做的更改而改变。

1 个答案:

答案 0 :(得分:3)

由于Objective-C是C的严格超集,你仍然可以这样做:传递指向你的整数的指针并使用解除引用运算符(前缀*)来查找该地址中存在的值:

-(void)create:(uint32_t*)uLen
{
    sprintf((char*)ps[(*uLen)],"%x%d",val,val1);
}

但是,请参考is not very common in Cocoa。实际上,它主要限于NSError**。为什么不传递一个简单的整数并返回新值,因为您当前正在返回void

-(uint32_t)create:(uint32_t)uLen
{
    sprintf((char*)ps[uLen],"%x%d",val,val1);
    ...
    return newValue;
}