Делает указатель из целого числа без приведения

У меня есть просто предупреждение в моем коде разработчика iphone.

NSUInteger *startIndex = 20;

Этот код работает, но у меня есть предупреждение:

предупреждение: передача аргумента 1 из 'setStartIndex:' делает указатель из целого числа без приведения

Спасибо за вашу помощь.

2 ответа

Решение

Предупреждение в значительной степени говорит обо всем: вы инициализируете startIndex, который является указателем на NSUInteger, чтобы 20, который является целочисленным литералом. Вам нужно выделить место для хранения целого числа где-то.

Может случиться так, что вы хотите что-то вроде этого:

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

Или возможно

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

Но, учитывая имя var, кажется, вы также можете немного запутать семантику, и, возможно, просто хотите:

NSUInteger startIndex = 20;

NSUInteger является скалярным типом (определяется как typedef unsigned int NSUInteger;). Исправьте ваш код так:

NSUInteger startIndex = 20; 

Вы можете использовать его сразу после этого (или с &startIndex, если вам нужно передать указатель на NSUInteger).

Другие вопросы по тегам