cosi funziona ad esempio(mettendo la z)

codice:
#include <stdio.h>
#include <stdlib.h>

long quadrato(long);

int main()
{
long x,y;
printf("Inserisci un intero: ");
scanf("%ld",&x);
y=quadrato(x);
printf("Il quadrato di %ld e' %ld \n",x,y);

system("PAUSE");
}

long quadrato(long x)
{ int z;
z = x * x;
return z;
}
con o senza return



e comunque io so che le variabili coinvolte nelle funzioni(che siano parametri o direttamente variabili globali) vengono modificate solo nella funzione ad eslusione del valore di ritorno ovviamente, e il valore che assumono nella funzione non viene considerato nel corpo principale se non tramite puntatori...mi sbaglio?
quindi cosa cambierebbe se io modificassi una variabile globale o una locale(nel main)?