我有一个变量
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/