Niz stringova nije matrica.
Iako je prirodno da pomisliš to pošto je i sam string niz, niz stringova ne mora da bude nužno matrica, zato što u nizu stringova možeš da imaš varirajuće dužine stringova i samim tim nemaš matricu.
Možeš da imaš ovako u nizu stringova:
12345678'\0'
12345'\0'
123456789'\0'
123'\0'
1234'\0'
Primeti da je nazubljeno, to samim tim nije matrica.
Niz stringova se deklariše sa char** pa dinamički alociraš svaki memoriju za svaki string i stavljaš u svakoj iteraciji. Ili da napraviš matricu char[n][m] gde će n da bude broj reči a m dužina najduže reči.
U ovom drugom slučaju ova gore matrica će izgledati
12345678'\0'_
12345'\0'____
123456789'\0'
123'\0'______
1234'\0'_____
Gde _ označava memoriju rezervisanu za taj string ali u suštini ne koristi. Zahvaljujući '\0' kada uzmeš 4 red matrice on će očitati 123 a ne 123______
Nadam se da sam pomogao, pošto umem da budem zbunjujuć
Što se tiče prvog načina, u principu se svodi da deklarišeš niz pokazivača koji će zapravo pokazivati na stringove u memoriji.