адресный оператор в Objective C - PullRequest
0 голосов
/ 15 мая 2011

Я портирую код cpp на Objective C.

In cpp

void create(INT32u &uLen)
{
 sprintf((char*)ps[uLen],"%x%d",val,val1);
}

In Objective C

-(void)create:(uint32_t**)uLen
{
 sprintf((char*)ps[uLen],"%x%d",val,val1);
}

Это дает мне ошибку, поскольку индекс будет принимать только целочисленное значение.Как мне нужно передать переменную.Переданная исходная переменная также должна меняться вместе с изменениями, внесенными в переменную uLen.

1 Ответ

3 голосов
/ 15 мая 2011

Поскольку Objective-C является строгим надмножеством C, вы все равно можете сделать это: передать указатель на целое число и использовать оператор разыменования (префикс *) для поиска значения, существующего по этому адресу:

-(void)create:(uint32_t*)uLen
{
    sprintf((char*)ps[(*uLen)],"%x%d",val,val1);
}

Однако передача по ссылке не очень распространена в Какао .На самом деле, он в значительной степени ограничен NSError**.Почему бы не передать простое целое число и вернуть новое значение, так как вы в настоящее время возвращаете void?

-(uint32_t)create:(uint32_t)uLen
{
    sprintf((char*)ps[uLen],"%x%d",val,val1);
    ...
    return newValue;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...