Difficulty Understanding C Pointer Syntax -


given following c definitions:

#define sync_byte_1                         0x5a #define sync_byte_2                         0xa5 

and pointer declaration:

uint8   *pcommanddata; pcommanddata = getcommandbufferpointer( lingo_general, stringlength + 3 ); 

what following 2 lines of code doing pointer?

*pcommanddata++ = sync_byte_1; *pcommanddata++ = sync_byte_2; 

i don't understand use of * , ++ in instance. if pointer's address being incremented shouldnt * replaced &?

pcommanddata pointer piece of memory. first line

*pcommanddata++ = sync_byte_1; 

sets value @ address 0x5a, , increments pointer pcommanddata next address. next line

*pcommanddata++ = sync_byte_2; 

works similarly: sets value pcommanddata points to, 0xa5, , increments pointer next address.

perhaps picture useful. before either line executes, memory in neighborhood of wherever pcommanddata points might this:

                    |        |                     +--------+ pcommanddata -----> |        |                     +--------+                     |        |                     +--------+                     |        |                     +--------+                     |        | 

after *pcommanddata++ = sync_byte_1;:

                    |        |                     +--------+ pcommanddata --+    |  0x5a  |                |    +--------+                +--> |        |                     +--------+                     |        |                     +--------+                     |        | 

and after *pcommanddata++ = sync_byte_2;:

                    |        |                     +--------+ pcommanddata --+    |  0x5a  |                |    +--------+                |    |  0xa5  |                |    +--------+                +--> |        |                     +--------+                     |        | 

Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -