#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int x = 65;
int *ptr = &x;
char * a= (char *)ptr;
cout<<(int)*(a);
getch();return 0;
}
Sixeof (ptr) и Sizeof (a) дисплей 4
Sizeof (int) отображает 4, а sizeof (char) отображает 1
Таким образом, 65 хранится в 4 байтах, т.е.
00000000 00000000 00000000 01000001 и адрес первых байтов сохраняется в ptr
В приведенном выше коде я ввел int * в char *, чтобы вывести значение, сохраненное в первом байте x (type int).
Таким образом, после типизации "a" сохраняет первый байтовый адрес, т.е. также содержится в ptr
Теперь при отображении (int) * a разве он должен рассматривать только первый байт для отображения значения .. ??
но вывод равен 65 вместо 0 (первое байтовое значение) .. Куда я иду не так ...?
что я узнал, это
char * ptr1;
ptr1++; //Ptr1 goes to the next byte..*ptr1 will display only 1 byte value
int * ptr2;
ptr1++; //Ptr2 goes to the next 4 byte..*ptr2 will display value conmtain in 4 bytes
PS - я работаю над Dev-C ++