Непонятки с указателем типа void* - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет. Имеем следующий, редко используемый в быту нормальных программистов, код:
#include <stdio.h>
 
int main() {
    int a = 0x11223344;
    char c = 0x77;     // or 0x88
    void *b = &a;
 
    printf("%p %p %p %p\n", *((char*)b + 3), *((char*)b + 2), *((char*)b + 1), *(char*)b);
 
    *((char*)b + 2) = c;
 
    printf("%p %p %p %p\n", *((char*)b + 3), *((char*)b + 2), *((char*)b + 1), *(char*)b);
 
    getchar();
    return 0;
}
Если c = 0x77
00000011 00000022 00000033 00000044 00000011

00000077

00000033 00000044
Если c = 0x88
00000011 00000022 00000033 00000044 00000011

FFFFFF88

00000033 00000044
Что мною упущено в теории, что так происходит при разных значениях "

char c

" ?

Решение задачи: «Непонятки с указателем типа void*»

textual
Листинг программы
for(char i=1;i;i++)
  printf(" %x %d %c",i,i,i);

Объяснение кода листинга программы

Код, который вы предоставили, выполняет следующие действия:

  1. Объявляет переменную типа char с именем i и инициализирует её значением 1.
  2. Устанавливает формат вывода в шестнадцатеричную систему с помощью функции printf.
  3. Выполняет цикл for, который продолжается до тех пор, пока значение переменной i больше или равно нулю.
  4. Внутри цикла выводит на экран значение переменной i в шестнадцатеричной системе счисления, затем в десятичной системе счисления и в символьной системе счисления.
  5. После выполнения цикла, код завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы