La #define è una macro del preprocessore ed associa qualcosa ad un identificatore.
La prima fase della compilazione consiste appunto nella sostituzione macro-->stringa
nel tuo caso il codice verrà cambiato da:
int maxmin (int w[],int size)
a:
int maxmin (int w[],int 20)
perchè il preprocessore prima di eseguire la compilazione sostituisce 'size' con '20'
Capito?!?