[quote=Alexey_1]Посмотрите под отладчиком, c выводом значения массива a, вот этот пример:
Не упорствуйте. Я вижу только, что Вы совершенно не понимаете сути организации массивов на Сях, вопросов типизации переменных и вопросы распределения памяти при объявлении переменных там.
Смотреть в отладчике мне Ваш пример незачем. Я и без него знаю, что я там увижу.
А увижу я там ошибку компилятора. Вам подсказать какую именно и в какой строке? Так что до отладчика и дело не дойдет.
Вам я предлагаю решить следующую задачу. Опять же по массивам.
Вопрос: Массивы а[3][4] и b[4][3] и c[12] (выделенные по Вашему правилу malloc(12*sizeof(int)))- тождественны? А именно - на что именно указывают указатели a[1], b[1] и c[1]? А а[3] и b[3]? А на какую ячейку будет казывать указатели a[1][5] и b[1][5]? Что будет происходить, если введем новый указатель int **p и сделаем так:
p=a;
p+=2; - куда показываем?
++p; - куда показываем?
p=b;
p+=2; куда показываем?
++p; Куда показываем?
А если мы сделаем так:
int **p=(int **)malloc(12,sizeof(int)) - куда будет показывать p[1][1]?
Еще раз повторяю - многомерные массивы на С это массивы массивов. Для корректного распределения памяти под эти массивы необходимо вначале распределить массив указателей на массивы значений, а затем - каждому из этих указателей на массив значений присвоить значение адреса начала массива самих значений, адрес начала строки.[/quote]
Если бы Вы соизволили откомпилировать мой пример и прогнать его под отладчиком... Но Вы из своего снобизма только теоретизировать можете.
У мня всё скомпилировалось и я под отладчиком данный пример прогонял...