以下是一段C++代码,它将整数变量地址分配给字符指针。

int ia = (1<<25) + (1<<24) + (1<<17) + (1<<8) + 4;
char *cArr = (char *)(&ia);
int i;
for(i = 0; i < 4; i++){ cout << (int)cArr[i] << endl; }

我选择了整数变量,以便MSB字节的值可以为3,下一个值为2,下一个值为1,而LSB字节的值为4。

现在,当我将整数的地址分配给字符指针时,将得到以下结果:
cArr[0] = 4
cArr[1] = 1
cArr[2] = 2
cArr[3] = 3

我对此结果有一些疑问:
  • 是否总是与我正在使用的计算机无关,始终使LSB字节获得第一个地址。
  • 结果与Little Endian和Big Endian有关。我也在寻找一些基本的教程,可以使我了解Little Endian和Big Endian的基础知识。
  • 结果与堆栈在计算机上的增长方式有关。

  • 顺便说一下,我在Windows PC上工作

    最佳答案

    1)。不,这取决于计算机体系结构和硬件。这是可以作为引用的表格。

    2)。基本教程。希望这足够了。
    http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html

    3)。从表窗口中可以看到,与堆栈无关,Little Endian,因此LSB放在首位。

    让我知道是否能回答您。

    再见!

    关于c++ - 将整数变量地址分配给字符指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20592524/

    10-11 19:17