这是什么意思?将变量的地址转换为char。怎么来的?
问题描述:
这是什么意思?这是什么意思?将变量的地址转换为char。怎么来的?
int main(int argc, char *argv[]) {
int size = 2048;
char *stack;
stack = (char *) &size; // cast memory address of a variable to char
}
我真的不明白如果我们施放一个变量的内存地址会是什么。
答
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变量的第一个字节,其确切值是平台相关的(取决于机器字节顺序)
似乎是由某人编写的代码不具有良好的调试器。看一个函数的堆栈框架是一个沼泽标准功能。潜水的真正意图,好吧,谁知道。问他,而不是我们。 –
@Oka Prinarjaya这意味着什么,因为你没有显示实际的代码和铸造使用的上下文。 –