c - 类型转换指针

标签 c typecasting-operator

我有一个变量

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/

相关文章:

c - 最后如何完善C语言的hangman循环问题?

c - 在有序对结构数组上实现二进制搜索

c - 当我编译 x264 时,出现错误 undefined reference to sync_fetch_and_add_4

java - 无法执行类型转换 - 不兼容的类型,int 无法转换为 c2

javascript - Sequelize - Node Js - 枚举和整数字段搜索选项

c++ - 尝试将整数强制转换为 void 以按值传递给 pthread 函数

c - 无需条件语句访问第 n 位

c - 缓冲区溢出缓冲区长度

python - 在 python 中将 numpy 矩阵类型转换为字符串

c++ - 为什么 char* 为什么不能在 c++ 文件 I/O 的写函数中使用 bool*