我在书籍和嵌入式系统相关网站上看到过很多这样的例子。
据我所知,它用于访问存储在该固定内存地址中的数据。
这是我在某本书中得到的例子;
unsigned char *p=(unsigned char *)0x41E;
类型cast的用途是什么,我们可以直接使用
unsigned char *p=0x41E;
请详细解释一下,类型转换有什么用,我们是将地址
(unsigned char *)
本身存储到指针0x41E
还是存储在指针p
中?我完全糊涂了。
请帮忙。
最佳答案
类型转换的用途是什么。(无符号字符*),在这里我们可以直接使用unsigned char *p=0x41E
0x41E
是十六进制数,并不意味着它是unsigned char *
类型。您应该通过将它强制转换为unsigned char *
,告诉编译器它是一个地址(类型unsigned char *
)。
我们是将地址“0x41e”本身存储到指针p,还是存储了其他内容。
是的,我们将地址0x41E
存储到指针p
。通过执行unsigned char *p = (unsigned char *)0x41E
,您将通知编译器p
指向内存位置0x41E
,通过取消对p
的引用,它将获得存储在内存位置0x41E
的内容。
只需运行以下代码来检查:
#include <stdio.h>
int main()
{
unsigned char *p=(unsigned char *)0x41E;
printf("%p\n",p);
}
输出:
0000041E //output is not 0x41E because '0x' is used as prefix to inform the compiler that it is a hexadecimal number