c - 加号 (++) 运算符应用于结构时的行为是什么?

标签 c struct arduino

我正在尝试通过玩 Arduino Uno 来学习 C。我正在审查 code for the Colorduino library on github .我想知道 ++ 在应用于结构时如何工作。

Colorduino.h 中定义了一个 PixelRGB 结构:

typedef struct pixelRGB {
  unsigned char r;
  unsigned char g;
  unsigned char b;
} PixelRGB;

Colorduino.cpp有一些代码将 ++ 运算符应用于 PixelRGB 指针。这是如何工作的?

for (unsigned char y=0;y<ColorduinoScreenWidth;y++) {
  for(unsigned char x=0;x<ColorduinoScreenHeight;x++) {
    p->r = R;
    p->g = G;
    p->b = B;
    p++;
  }
}

最佳答案

请注意,此代码将 pointer 递增到 PixelRGB,而不是结构本身。 因此,++ 应用于指针时的结果只是将其值增加 sizeof(PixelRGB)

关于c - 加号 (++) 运算符应用于结构时的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12127471/

相关文章:

c - 在 C 中设置堆栈

C 警告(clang 编译器) "integer literal is too large to be represented in a signed integer"

c# - 从 C# 调用 C DLL 函数 - 参数结构太大或太复杂而无法编码(marshal)

c - 解析C语言中以逗号分隔的字符串 - Arduino

c++ - 如何创建用于多个源文件的全局变量/包含/函数

c++ - 为什么 C 字 rune 字是 int 而不是 char?

c - 如何定义大于 16 字节的 float 据类型?

perl - 我可以使用 Perl 中的 Exporter 导出结构吗?

c++ - 按地址访问结构中的元素

algorithm - 寻找让机器人在房子里定位自己的方法