C'e' stata un'evoluzione nella sintassi e nelle regole di scrittura del codice nel linguaggio C e C++.
Per prima cosa, bisogna capire in QUALE linguaggio stai scrivendo il codice: anche se TU pensi di scriverlo in C, in realta' la scelta del linguaggio viene fatta in base a diversi fattori, uno dei quali e' l'ESTENSIONE del file:
.c per il C
.cpp, .cxx per il C++
Capito questo, il fatto di poter dichiarare una variabile in qualunque punto del codice e non semplicemente subito dopo una graffa e' legato, tra le varie cose, anche all'evoluzione del compilatore ed a come le variabili vengono gestite mediante lo stack.
Tanto per fare un esempio classico, in C (precedente al C99) non puoi scrivere:
for(int i=0; i<n; i++){ ... }
mentre lo puoi fare in C++.
Per risolvere questi ed altri dubbi, comunque, non e' una cattiva idea consultare la documentazione ufficiale dei vari linguaggi: problemi del genere li avrai con tutti i linguaggi di programmazione con cui avrai a che fare (Java, C#, Python, Clojure, Scala, Swift, ...)