难以理解C指针语法

Sab*_*bin 5 c pointers

鉴于以下C定义:

#define SYNC_BYTE_1                         0x5A
#define SYNC_BYTE_2                         0xA5
Run Code Online (Sandbox Code Playgroud)

和指针声明:

UINT8   *pCommandData;
pCommandData = GetCommandBufferPointer( LINGO_GENERAL, stringLength + 3 );
Run Code Online (Sandbox Code Playgroud)

以下两行代码到底是做什么的?

*pCommandData++ = SYNC_BYTE_1;
*pCommandData++ = SYNC_BYTE_2;
Run Code Online (Sandbox Code Playgroud)

我特别不了解*++在这种情况下的使用.如果指针的地址递增,不应该*&?替换?

Mat*_*all 8

pCommandData是指向某段内存的指针.第一行

*pCommandData++ = SYNC_BYTE_1;
Run Code Online (Sandbox Code Playgroud)

将该地址的值设置为0x5A,然后将指针递增pCommandData到下一个地址.下一行

*pCommandData++ = SYNC_BYTE_2;
Run Code Online (Sandbox Code Playgroud)

工作方式类似:它设置pCommandData指向,指向0xA5,然后将指针递增到下一个地址的值.

也许一张照片会很有用.在任一行执行之前,位于任何pCommandData位置附近的内存可能如下所示:

                    |        |
                    +--------+
pCommandData -----> |        |
                    +--------+
                    |        |
                    +--------+
                    |        |
                    +--------+
                    |        |
Run Code Online (Sandbox Code Playgroud)

之后*pCommandData++ = SYNC_BYTE_1;:

                    |        |
                    +--------+
pCommandData --+    |  0x5A  |
               |    +--------+
               +--> |        |
                    +--------+
                    |        |
                    +--------+
                    |        |
Run Code Online (Sandbox Code Playgroud)

之后*pCommandData++ = SYNC_BYTE_2;:

                    |        |
                    +--------+
pCommandData --+    |  0x5A  |
               |    +--------+
               |    |  0xA5  |
               |    +--------+
               +--> |        |
                    +--------+
                    |        |
Run Code Online (Sandbox Code Playgroud)


Bil*_*nch 8

这个:

UINT8 *pCommandData;
*pCommandData++ = SYNC_BYTE_1;
*pCommandData++ = SYNC_BYTE_2;
Run Code Online (Sandbox Code Playgroud)

相当于:

UINT8 *pCommandData;
*pCommandData = SYNC_BYTE_1;
pCommandData++;
*pCommandData = SYNC_BYTE_2;
pCommandData++;
Run Code Online (Sandbox Code Playgroud)

要么:

UINT8 *pCommandData;
pCommandData[0] = SYNC_BYTE_1;
pCommandData[1] = SYNC_BYTE_2;
pCommandData += 2;
Run Code Online (Sandbox Code Playgroud)