Непонятки с указателем типа void* - C (СИ)
Формулировка задачи:
Всем привет.
Имеем следующий, редко используемый в быту нормальных программистов, код:
Если c = 0x77
Если c = 0x88
Что мною упущено в теории, что так происходит при разных значениях "
#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;
}
00000011 00000022 00000033 00000044
00000011
00000077
00000033 00000044
00000011 00000022 00000033 00000044
00000011
FFFFFF88
00000033 00000044char c
" ?Решение задачи: «Непонятки с указателем типа void*»
textual
Листинг программы
for(char i=1;i;i++)
printf(" %x %d %c",i,i,i);
Объяснение кода листинга программы
Код, который вы предоставили, выполняет следующие действия:
- Объявляет переменную типа char с именем
iи инициализирует её значением 1. - Устанавливает формат вывода в шестнадцатеричную систему с помощью функции printf.
- Выполняет цикл for, который продолжается до тех пор, пока значение переменной
iбольше или равно нулю. - Внутри цикла выводит на экран значение переменной
iв шестнадцатеричной системе счисления, затем в десятичной системе счисления и в символьной системе счисления. - После выполнения цикла, код завершается.