Как выровнять указатель в C

Есть ли способ выровнять указатель в C? Предположим, я записываю данные в стек массива (так что указатель идет вниз), и я хочу, чтобы следующие данные, которые я пишу, были выровнены по 4, чтобы данные записывались в ячейку памяти, кратную 4, как бы я это сделал что?

У меня есть

 uint8_t ary[1024];
 ary = ary+1024;
 ary -= /* ... */

Теперь предположим, что арный указывает на местоположение 0x05 . Я хочу, чтобы он указывал на 0x04 . m записывает данные в стек массива (чтобы указатель двигался вниз), и я хочу, чтобы следующие данные, которые я пишу, были выровнены по 4, чтобы данные записывались в память ...

Есть ли способ выровнять указатель в C? Предположим, я записываю данные в стек массива (так что указатель идет вниз), и я хочу, чтобы следующие данные, которые я пишу, были выровнены по 4, чтобы данные записывались в ячейку памяти, кратную 4, как бы я это сделал что?

У меня есть

 uint8_t ary[1024];
 ary = ary+1024;
 ary -= /* ... */

Теперь предположим, что арный указывает на местоположение 0x05 . Я хочу, чтобы он указывал на 0x04 . m записывает данные в стек массива (чтобы указатель двигался вниз), и я хочу, чтобы следующие данные, которые я пишу, были выровнены по 4, чтобы данные записывались в память ...

Есть ли способ выровнять указатель в C? Предположим, я записываю данные в стек массива (так что указатель идет вниз), и я хочу, чтобы следующие данные, которые я пишу, были выровнены по 4, чтобы данные записывались в ячейку памяти, кратную 4, как бы я это сделал что?

У меня есть

 uint8_t ary[1024];
 ary = ary+1024;
 ary -= /* ... */

Теперь предположим, что арный указывает на местоположение 0x05 . Я хочу указать на 0x04 . m записывает данные в стек массива (чтобы указатель двигался вниз), и я хочу, чтобы следующие данные, которые я пишу, были выровнены по 4, чтобы данные записывались в ячейку памяти, кратную 4, как мне это сделать?

У меня есть

 uint8_t ary[1024];
 ary = ary+1024;
 ary -= /* ... */

. Теперь предположим, что арный указывает на местоположение 0x05 . Я хочу, чтобы он указывал на 0x04 . m записывает данные в стек массива (чтобы указатель двигался вниз), и я хочу, чтобы следующие данные, которые я пишу, были выровнены по 4, чтобы данные записывались в ячейку памяти, кратную 4, как мне это сделать?

У меня есть

 uint8_t ary[1024];
 ary = ary+1024;
 ary -= /* ... */

. Теперь предположим, что арный указывает на местоположение 0x05 . Я хочу, чтобы он указывал на 0x04 . Теперь я мог бы просто сделать

ary -= (ary % 4);

, но C не позволяет использовать указатели по модулю. Есть ли какое-либо решение, независимое от архитектуры?

24
задан templatetypedef 30 January 2011 в 00:38
поделиться