我有个变数
UInt32 PageAddr = 0x80000000;
还有一个函数
UInt8 Blank_Check(const UInt8 *Address)
我在输入变量后调用函数。
Blank_Check((UInt8 *)&PageAddr);
什么将是将传递给空白支票的价值。我试图分析,但我无法理解它是如何工作的?
最佳答案
简短版本:删除&
字符。
较长版本:
它将是完全相同的指针值。该类型仅用于帮助C编译器知道如何索引和取消引用指针。
要澄清值和指针之间的差异,请尝试:
UInt32 PageAddr = 0x80000000;
printf("%d, %p\n", PageAddr, &PageAddr);
从变量的名字来看,我想你真的想做如下事情:
Uint32* PageAddr = 0x80000000; /* as a pointer */
Blank_Check((UInt8 *)PageAddr); /* cast pointer to another kind of pointer */
或者,如果希望将指针表示为整数(在几乎所有平台上都有效,但不是100%可移植的),请执行以下操作:
Uint32 PageAddr = 0x80000000; /* as an integer */
Blank_Check((UInt8 *)PageAddr); /* cast integer to pointer */
关于c - 类型转换指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13912248/