v tom druhom pripade sa nic neprepocitava, ale urobi sa pole pointerov (array of array) a teda pre kazdy riadok sa alokuje pamat osobitne a ulozi sa pointer na dany riadok do toho pola pointerov. Prvy rozmer teda vlastne vybere spravny pointer, a podla druheho rozmeru sa potom posuva v tom riadku.
Co je efektivnejsie tazko povedat zavisi od prekladaca ze ako ten druhy pripad prelozi a ake packalovske kontroly tam prevadzkuje. Ten prvy pripad je lepsi pri alokacii pola (alokuje sa len raz cely kus pamate), druhy pripad je lepsi pri pristupe k prvkom pola ak sa to efektivne naprogramoje (napr. pri sekvencom pristupe k riadku si precitam pointer na riadok len raz a posuvam ho po riadku) a ak to prekladac efektivne prelozi (C je v tomto lepsi nerobi ziadne kontroly). Najefektivnejsie je napisat ten pristup k polu v assembleri
P.S. ak to pole nepouzivas v nejakej kritickej oblasti (napr. ak sa k tomu nepristupuje miliardu krat po sebve) tak je to plusminus jedno ze co pouzijes. To jedno nasobenie to moc nespomali.