- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
for (i=0; i<n1; i++)
for (j=0; j<n; j++)
for (l=0; l<m; l++)
{
printf ("Введите в матрицу № %d строку №[%d][%d] \n", i+1,j+1,l+1);
while((h<k) && (*(*(*(*(mt+i)+j)+l)+h-1)!='\n')) //цикл для последовательного ввода всех элементов символьной строки;
{
fflush(stdin);
*(*(*(*(mt+i)+j)+l)+(h++)) = getchar(); //ввод элемента символьной строки;
}
if (*(*(*(*(mt+i)+j)+l)+h-1)='\n') //удаление из конца введённой строки символа переноса \n;
{ *(*(*(*(mt+i)+j)+l)+h-1)='\0';}
else
{ *(*(*(*(mt+i)+j)+l)+h)='\0';}
h = 0;
}
Говногость 15.12.2010 21:43 # +2
FadedInto 15.12.2010 21:57 # +9
inkanus-gray 15.12.2010 22:07 # 0
bugmenot 16.12.2010 00:42 # 0
nil 16.12.2010 08:39 # +1
eth0 16.12.2010 19:19 # +1
bugmenot 16.12.2010 19:33 # +1
Xander_Bass 18.12.2010 04:39 # 0
rat4 16.12.2010 09:55 # +1
Что это!?
Altravert 17.12.2010 09:48 # 0
rat4 17.12.2010 10:24 # +3
bugmenot 17.12.2010 15:38 # +3
TarasB 16.12.2010 11:19 # 0
TarasB 16.12.2010 12:32 # 0
xaionaro 16.12.2010 12:38 # +2
TarasB 16.12.2010 12:47 # +1
Мне интересно, что по смыслу означает это нагромождение указателей. Я пытаюсь не смотреть тупо на синтаксис, а понять, что за ним стоит. Тебе не интересно - ну так не надо делать вывод, что я не знаю оператора "звёздочка".
По смыслу это уже не матрица матриц.
Строка номер 5 говорит именно о том, что это массив матриц строк. Вроде.
xaionaro 16.12.2010 12:51 # 0
TarasB 16.12.2010 12:56 # 0
xaionaro 16.12.2010 12:34 # 0
Во-первых, 4 звёздочки лишь потому, что используется 4-мерный массив (КЭП). Достаточно лишь посмотреть в код, и в голове преобразовать *(*(*(*(mt+i)+j)+l)+h-1) в mt[i][j][l][h-1]... (что, кстати, будет более pure c, ибо на Си как указано в куске кода выше обычно не пишут)
Во-вторых, по поводу фразы "массив передали в функцию по указателю" лишена смысла в данной ситуации, потому что это дополнительной звёздочки не даёт. Дополнительную звёздочку дало бы, если бы передавался указатель на указатель, т.к. работая с массивом уже изначально имеется указатель.
TarasB 16.12.2010 12:37 # 0
Ты думаешь, я это не понимаю? Ты бы ещё сказал, что это указатель на указатель на указатель на указатель.
Я пытаюсь смысл понять.
> Во-вторых, по поводу фразы "массив передали в функцию по указателю" лишена смысла в данной ситуации, потому что это дополнительной звёздочки не даёт.
Если этот массив собираются менять внутри функции (увеличивать размер, например), то даёт.
xaionaro 16.12.2010 12:45 # 0
В случай, когда указатель на массив собираются менять, передают обычно указатель на указатель (ну или в некоторых частных случаях полуают новое значение через return). Вот тогда появляется дополнительная звёздочка. Кстати, веьсма очевидно, что тут ничего подобного не делается.
У нас похоже с вами разная терминология. Для вас массив - это указатель на область, где имеется n-ое кол-во последовательных однородных элементов. А для меня массив - это собственно n-ое кол-во последовательных однородных элементов. Другими словами, я так понял, "ваш массив" - это указатель на "мой массив".
http://ru.wikipedia.org/wiki/Массив
TarasB 16.12.2010 12:49 # 0
Да, в данном случае я понимаю массив именно так. Ритчи понимал его примерно так же.
bugmenot 17.12.2010 15:41 # +5
написать-то не проблема, вот потом обратно прочитать, это да