Запятая в языке Си имеет смыл «И», она означает, что нужно сделать и первое, и второе и третье. Используется, например, в таких случаях:
for(i=1,j=2;i<3&&j<3;i++,j++)
в качестве инициализации цикла идет присваивание для двух переменных, в качестве перехода на следующую итерацию - увеличение значений двух переменных
Иногда используется, чтобы не писать операторные скобки, например:
if(a==b)
printf(«равно»),a+=b,b++;
следующая запись вызовет предупреждение “code has no effect”:
i=2,3;
потому что фактически она означает последовательность двух операторов:
i=2;
3;
по этой же схеме и приведенные Вами примеры сработают как ожидается:
a[i,j]
вернет значение a[i]
, но не a[i][j]
.