从没有强制转换的整数生成指针

时间:2009-11-25 09:40:12

标签: iphone integer pointers

我的iphone开发代码中只有一个警告。

NSUInteger *startIndex = 20;

此代码有效,但我有一个警告:

警告:传递'setStartIndex:'的参数1使得指针来自整数而没有强制转换

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

警告几乎说明了一切:您正在初始化startIndex,这是一个指针NSUInteger,再到20,这是一个整数字面值。你需要分配空间来保存整数本身。

可能是你想要的更像是这样的东西:

NSUInteger *startIndex = malloc(sizeof(NSUInteger));
*startIndex = 20;

或者

static NSUInteger startIndex = 20;
NSUInteger *startIndexPtr = &startIndex;

但是考虑到var名称,你似乎也可能会混淆语义,可能真的只是想要:

NSUInteger startIndex = 20;

答案 1 :(得分:1)

NSUInteger是标量类型(定义为typedef unsigned int NSUInteger;)。将您的代码更正为:

NSUInteger startIndex = 20; 

您可以在之后直接使用它(或者如果您需要将指针传递给NSUInteger,则使用& startIndex)。