一个指针的用法

DM9000_REGS为一个结构体,存放DM9000的寄存器

DM9000_REGS  *g_pDM9000;      //定义一个该结构体类型的指针

BYTE  *pAddress;                     

g_pDM9000=(volatile DM9000_REGS*)pAddress;

//pAddress和g_pDM9000的类型不一样,不能直接赋值,(volatile DM9000_REGS*)是强制转换指针类型的用法,临时把pAddress转换为DM9000REGS类型的指针,骗过编译器把pAddress的值直接赋给g_pDM9000,强制转换指针类型只在当前语句有效,执行完该语句后恢复原来定义的类型,volatile表示可变的,是避免编译器优化,每次读取都从内存中读;

另一例子:

#define rBWSCON    (*(volatile unsigned *)0x48000000)      //把0x48000000临时转换为指针再取内容,rBWSCON就是地址0x48000000的内容;

 

 

你可能感兴趣的:(指针)