我正在攻读考试,我发现了这个陈述。我已经阅读了几本书和笔记,到目前为止我还没有遇到过这个,而且我甚至不知道该怎么称呼它所以我无法找到答案。
在这里。
typedef struct {
unsigned a: 4;
unsigned b: 4;
} byte, *pByte;// what does *pbyte means here?
int main(){
pByte p = (pByte)x; // this is typecasting void pointer. how does it work with *pbyte
byte temp;
unsigned i;
for(i = 0u; i < n; i++) {
temp = p[i]; //again I have no idea why we suddenly have array
}
}
如果我不知道基本的东西......好吧我不知道因为我还在学习:)请帮帮我。感谢。
答案 0 :(得分:1)
typedef struct {
...
} byte, *pByte;
定义了一个带有别名byte
的结构,并为pByte
定义了一个别名byte*
,所以
您可以通过以下方式使用它:
byte b;
pByte pB = &b;
也相当于:
byte b;
byte* pB = &b;
所以万一你有一个void
指针x
(这有点可疑,如果有可能你应该尽量避免在第一时使用void*
)你知道吗指向n
结构数组的第一个元素:
pByte p = (pByte) x; // casts x back to the correct type
byte temp;
然后
temp = p[i];
是可能的并且相当于(指针算术):
temp = *(p + i);