I numerosi problemi e conflitti di standard inerenti il passaggio di un array a subscritti multipli come parametro sono ampiamente spiegati in
questo famoso thread. Si tratta di un tema spinoso e ben noto.
In breve: programmando in C++, si usano le classi apposite come vector, string e valarray. Gli array C-style sono deprecati da Stroustrup in persona e non andrebbero semplicemente usati nel real world.
Nella prassi, programmando in C, si usa comunque una singola allocazione e si gioca poi con la banale aritmetica degli indici, per motivi prestazionali e di sintesi del codice, richiamati anche più oltre nel noto thread sopra linkato.
La soluzione meramente scolastica, well behaved, basata su allocazioni multiple è invece quella presentata per esteso (incluso un esplicito supporto per la programmazione difensiva e il fail test) nel thread già referenziato da Candaluar. Il tutto vale comunque per il C: per C++ vale la parola del creatore Stroustrup, ripresa in decine di guide di stile.