#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 バイトに格納され
ます。
上記のコードでは、最初のバイト x(type int) に格納されている値を出力する動機で、int* を char* に型キャストしました。
したがって、型キャスト後、「a」は最初のバイトアドレス、つまり ptr にも含まれます (int)*a を表示すると、値を表示するために最初のバイトのみを考慮する必要があります..?? しかし、出力は0(最初のバイト値)ではなく65です..どこが間違っているのでしょうか..?
私が学んだことは
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++ に取り組んでいます