views:

361

answers:

2

Hello, 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.

A: 

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).

Vladimir
+2  A: 

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;
walkytalky