c++ - 指针类型的结构还是指针的结构?

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

再说一次,如果我不了解一些基本知识……好吧,我不知道,因为我还在学习 :) 请帮助我。谢谢。

最佳答案

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/

相关文章:

c++ - 在 C++ 中自动/模板化生成测试 vector

c++ - 在我的程序中,它对数组按升序打印进行编程,但我正在尝试修改它,以便它按降序打印

java - 该方法应打印第 1 行中索引 a 和 b 之间的数组元素,包括 a 且不包括 b

javascript - 从对象数组键/值映射数组

c++ - 为什么arduino中有两个if语句?

c++ - QImage内存不足

c - 如何在 Windows C/C++ 中将数组传递到共享内存

c++ - win32 api 中 _tprintf 的替代 C++ 函数是什么?

c - 如何在c中使用corecursion?

c++ - 带字符串或字符的动态分配(数组)