Приращение указателя при копировании данных - PullRequest
0 голосов
/ 19 сентября 2019

Вопрос, у меня есть указатель char*, указывающий на некоторые данные (скажем, 1 КБ).Я должен вызвать метод из 32-битного текущего кода, который у меня есть:

 char* d;
 boolean r = getData(d); // data will be filled in d
 while (*d != NULL) {
     callAnotherMethod((int) d); // need to call it in chunk of 32 bit
     d = d + 2; // Increment by 2 because its char pointer.
 }

В чем я не уверен, так это в d + 2 или d + 1.Я попробовал это, и это работает, однако не уверен в понятии.

Также Если это int* d, то что правильно d + 1 или d + 2?

Небольшое обновление, да, приведение к int является преднамеренным, потому что я хочу callAnotherMethod с 32-битными данными.

1 Ответ

0 голосов
/ 19 сентября 2019

char обычно составляет 8 бит, поэтому для увеличения на 32 бита необходимо увеличить на 32/8.

d += 4;

Было бы лучше параметризовать это с точки зрения размера типа данных.

d += sizeof(int);

Вы также можете просто преобразовать указатель в int* и увеличить его как обычно.

intd = (int*)d;
while (get_data((char *)intd)) {
    callAnotherMethod(*intd);
    intd++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...