从整数生成指针而不进行强制转换

发布于 2024-08-12 12:37:16 字数 179 浏览 2 评论 0原文

我的 iPhone 开发代码中有一个简单的警告。

NSUInteger *startIndex = 20;

这段代码可以工作,但我有一个警告:

警告:传递“setStartIndex:”的参数 1 使指针来自整数而不进行强制转换

感谢您的帮助。

i have a simply warning in my iphone dev code.

NSUInteger *startIndex = 20;

This code work, but i have a warning :

warning: passing argument 1 of 'setStartIndex:' makes pointer from integer without a cast

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

予囚 2024-08-19 12:37:16

警告几乎说明了一切:您正在初始化 startIndex,它是一个指向 NSUInteger20指针 ,这是一个整数文字。您需要分配空间来保存整数本身。

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

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

或者也许

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

但是考虑到 var 名称,看起来你可能也混淆了语义,并且可能真的只是想要:

NSUInteger startIndex = 20;

The warning pretty much says it all: you are initialising startIndex, which is a pointer to NSUInteger, to 20, which is an integer literal. You need to allocate the space to hold the integer itself somewhere.

It may be that what you want is something more like this:

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

Or perhaps

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

But given the var name, it seems you may also be muddling the semantics a bit, and probably really just want:

NSUInteger startIndex = 20;
淡看悲欢离合 2024-08-19 12:37:16

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

NSUInteger startIndex = 20; 

您可以随后直接使用它(或者如果您需要传递指向 NSUInteger 的指针,则与 &startIndex 一起使用)。

NSUInteger is a scalar type (defined as typedef unsigned int NSUInteger;). Correct your code to:

NSUInteger startIndex = 20; 

You can use it directly afterwards (or with &startIndex if you need to pass a pointer to NSUInteger).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文