我有一个变量
UInt32 PageAddr = 0x80000000;和一个函数
UInt8 Blank_Check(const UInt8 *Address)在类型转换变量之后,我将调用函数。
Blank_Check((UInt8 *)&PageAddr);将传递给空白检查的值是什么。我试着分析,但我无法理解它是如何工作的?
发布于 2012-12-17 10:23:31
短版本:删除&字符。
更长版本:
它将是完全相同的指针值。类型的存在只是为了帮助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 */https://stackoverflow.com/questions/13912248
复制相似问题