Variable types with * prefix

The address of y is still being stored in ptr.

Serial.begin(9600);
  byte y = 0x35;
  byte *ptr = &y;
  Serial.print((unsigned int)ptr, HEX); //shows: 08FB

So, OP's claim that "byte *ptr = &y" is a contraction of the following two lines is correct.

byte *ptr;
ptr = &y;

Would be glad to hear with examples the true difference between "intialization", "declaration", "definition' and "assignment".