Делает указатель из целого числа без приведения
У меня есть просто предупреждение в моем коде разработчика 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).