Declareing and Initialising variables

I understand that global variables can be used anywhere in a Sketch and variables declared in a a function are only available within that function. However if a variable is declared and initialised with a value at the beginning of void loop(), would it be re-initialised each time round the Loop. ?

Yes.

It is possible to declare a variable with global extent and dynamic scope:

void loop ()
{
  static int i = 0 ; 
  ....
}

This means it will be initialized once, at the start of the sketch, ie it has global extent.
Dynamic scoping means its only visible within the block it is declared in.

Doing this has the advantage that the variable doesn’t pollute the global namespace,
which is nice and tidy if its only used inside one function.

Are variables which are declared & initialised inside the start of loop() re-initialised each time round the loop.?

Do you mean defined or declared...there's a difference. If the variables are defined in loop() and do not use the static storage specifier then, yes, they are initialized again, provided your code looks like:

void loop() 
{
   int val = 0;
   // rest of function body
}

val is set to 0 on each pass. However, using:

void loop() 
{
   int val;
   // rest of function body
}

does not initialize val on each pass because the compiler is not required to initialize variables with function (local) scope if it is a simple definition without an initializer.

 void loop() {
int A;  // Never automatically initialized.  Contains unknown value each time loop() starts.
int B = 99;  // Initialized to 99 each time loop() starts
static int C;  // Initialized to 0 when the program starts but then keeps the last value it was assigned
static int D = 99;  // Initialized to 99 the first time this line is executed but then keeps the last value it was assigned.
}

Many thanks everyone for replies and in particularly JohnWasser for the exceedingly concise reply. That makes it absolutely clear. Exactly the information I needed.