(char *)P的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:29:01
unsigned int MemoryBase;
char *flash_addr;
flash_addr=(char*)MemoryBase;

请问flash_addr=(char*)MemoryBase;的含义是什么?
谢谢!

memorybase是一个无符号整型。
flash_addr是一个指向字符类型的指针

flash_addr=(char*)MemoryBase;的含义是:
把无符号整型的MemoryBase;强制转化为指向字符的指针后赋值给flash_addr

只所以可以这样做的原因是:
指针(也就是地址)占用4个字节的宽度,unsigned int也占用4字节的宽度

通常,在嵌入式开发中,会用到这种方法!

memorybase是一个无符号整型。
flash_addr是一个指向字符类型的指针
flash_addr=(char*)MemoryBase; 是给flash_addr初始化
但是memorybase和flash_addr的类型不匹配
所以要把memorybase强制转换成制转化为指向字符的指针(flash_addr的类型。)
一般来说强制转换是(type*)。

你这里把一个整型强制转换成一个指向字符的指针,是不是你的程序在直接和硬件打交道? 好像这样的用法在一般程序里头不多见。

(char*)把MemoryBase;强制转化为指向字符的指针`
再把它赋值给flash_addr`