指针上有趣的问题..请帮助

时间:2010-09-06 12:43:53

标签: c++ void-pointers

#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 * to 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 ++

1 个答案:

答案 0 :(得分:13)

您的计算机为little-endian,最不重要的字节优先。