Pointer confusion

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