我只想告诉7楼 * (除了指向单个数据单位的指针外) 是解除引用的意思,并不是取里面的值
例:
//由于该指针是指向单个数据单位的指针,所以是获得了以ICU_BASE + 0x0480这个内存地址开始的4个字节的内容,并解析为unsigned int 型
例:
程序代码:
#include <iostream> int main() { const int (* const p)[4] = new int[2][4]; std::cout<< "p = " << p << "\tp + 1 = " << p + 1 <<std::endl; //由于p所指向数组的元素为4个int类型,所以加1会增加4 * sizeof(int)个字节 std::cout<< "*p = " << *p << "\t*p + 1 = " << *p + 1 << std::endl; //*p会解除一级引用,其性质不是取里的内容,而是使其指向一个元素为1个int类型的数组,加1只会扩展1 * sizeof(int)个字节 delete [] p; system("pause"); return 0; }*((volatile uint *) (ICU_BASE + 0x0480)) //这句的意思是把宏ICU_BASE + 0x0480的值(编译器优化为int型)强制转换为不会被编译器优化无符号int型的常指针
//由于该指针是指向单个数据单位的指针,所以是获得了以ICU_BASE + 0x0480这个内存地址开始的4个字节的内容,并解析为unsigned int 型
My life is brilliant