我正在为考试而学习,我看到了这个声明。我已经阅读了几本书和笔记,但到目前为止我还没有遇到过这个,而且我什至不知道该怎么调用它,所以我找不到答案。
开始了。
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
}
}
再说一次,如果我不了解一些基本知识……好吧,我不知道,因为我还在学习 :) 请帮助我。谢谢。
最佳答案
typedef struct {
...
} byte, *pByte;
用别名 byte
定义了一个结构,并为 byte*
定义了一个别名 pByte
,所以
您可以按以下方式使用它:
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);
关于c++ - 指针类型的结构还是指针的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19574988/