Infatti io per quello non riuscivo a capire, ragionavo come hai detto tu, ovvero che l'indirizzo di una stringa è un char ** quindi non riuscivo a capire come potesse funzionare, tra l'altro io per le stringhe uso già la fgets proprio per evitare problemi di buffer overflow.
La mia era solo una curiosità, infatti non credevo proprio di riuscire a compilare, invece neanche un warning tutto normale.