这是什么意思 ?将变量的地址转换为char。怎么会?

时间:2016-12-13 23:02:13

标签: c casting

是什么意思?

int main(int argc, char *argv[]) {
    int size = 2048;
    char *stack;

    stack = (char *) &size; // cast memory address of a variable to char
}

如果我们转换变量的内存地址,我真的不明白它会是什么。

1 个答案:

答案 0 :(得分:2)

int size = 2048;
char *stack;
stack = (char *) &size; // cast memory address of a variable to char
  • size是一个int变量,占用一个4字节的内存块(通常)。
  • &size因此是该内存块的地址。
  • char *stack = (char *)&size意味着stack是指向char的指针,指向该4字节内存块的开头。

基本上*stack是4字节int变量的第一个字节,精确值取决于平台(取决于机器的字节顺序)