I understand the above argument as follows in an 8-bit Arduino UNO Platform.
1. The myData component is a memory space (I assue that it is an array) whose items are 8-bit wide (hence: uint8_t = byte) and the base address of the array is in a pointer variable (hence: * is with (uint8_t*) = the cast). Demonstartions codes:
byte myData[] = {0x12, 0x34}; //uint8_t myData[] = {0x12, 0x34};
void setup()
{
Serial.begin(9600);
byte *ptr;//ptr is a pointer variable containing base address of a byte-type memory space
ptr = (byte*)&myData; //base address is passed into ptr variable
byte m = *ptr; // m = 0x12
Serial.println(m, HEX); //shows: 12
}
void loop() {}
2. If myData is an array of integers (datae items are 16-bit), then the beginning address of the array space would be passed to a pointer variable by the execution of the following code:
int *ptr; //int16_t *ptr
ptr = (int*)&myData;
3. if myData is a 32-bit memory space (the single data item is 32-bit), then the beginning address of the memory space would be passed to a pointer variable by the execution of the following code:
long y = 0x12345678;
long *ptr; //int32_t *ptr;
ptr = (long*)&y;
long m = *ptr;
Serial.println(m, HX); //shows: 12345678