float balance[10][5];
float *p;
p=(float *) balance;
でbalance[3][1]にアクセスする場合なんですが
*(p+(3*5)+1)
なんですが。
キャストすることなんですが、何故キャストするんでしょうか?

2次元っていっても(3*5)これ1次元ですよね?
(3*5)って言う場所がbalance[3]なんですか?
+1がbalance[1]ですか?
詳しく教えてください
キャストする理由など