指针类型的结构或指针的结构?

时间:2013-10-24 19:35:06

标签: c++ c arrays pointers structure

我正在攻读考试,我发现了这个陈述。我已经阅读了几本书和笔记,到目前为止我还没有遇到过这个,而且我甚至不知道该怎么称呼它所以我无法找到答案。

在这里。

 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
 }
}

如果我不知道基本的东西......好吧我不知道因为我还在学习:)请帮帮我。感谢。

1 个答案:

答案 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);