阅读:858回复:1
结构体指针的困惑
对于C语言的精华---指针..我的了解算是一知半解了..,所以我只能快乐而困惑学习编程
望诸位大侠指点以下代码的意思 typedef struct { // Status register BYTE BSY : 1; BYTE DRDY : 1; BYTE DF : 1 BYTE ERROr: 1 } Status, *pointerStatus; // pointerStatus 应该是个指向结构体的指针变量 void GetDeviceStatus( pointerStatus ds ) { //这是什么意思呢??难道让ds指向结构体吗?? 如果就这样目的的话,可以 // void GetDeviceStatus( Status *ds )啊 { BYTE * ptr = ( BYTE* ) ds; //这里我就更看不懂了! (BYTE*) ds 与BYTE * ds 一样吗?? ptr[ 0 ] = ataReadAlternateStatusReg(); //晕,ptr什么时候变成数组了?? 因为BYTE * ptr 只是 定义一个指向字节型的指针变量而../ ptr[ 1 ] = ataReadInterruptReasonReg(); ptr[ 2 ] = ataReadErrorReg(); } } |
|
|
沙发#
发布于:2003-08-06 12:57
1、pointerStatus ds 与 Status *ds 是一样的。一般的结构类型的定义都会有两个类型,一个是 “结构类型”,一个是 “结构指针 类型”。
2、(BYTE*) ds 是一个强制类型转换,把它转换成BYTE 指针类型,为了后面操作的方便。 3、因为 ds 中的内容是连续存放的,所以可以用数组的形式访问。 但我觉得你的 ptr[] 会访问出界,因为你的结构中是一些位域,它总共只占一个字节。 |
|
|