Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Массивы

Автор: Rocket 27.10.2007 19:37


#include<stdio.h>
void main()
{ int a[4][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};
for(i=0;i<4;i++);
{for (j=0;j<5;j++);
printf("%d\n",a[i][j]);
printf("\n"); }
}

В чём ошибка при выводе массива?

Автор: volvo 27.10.2007 19:46

Цитата
В чём ошибка при выводе массива?


for(i=0;i<4;i++); // <--- Вот в этой точке с запятой !!!

У тебя получился цикл с пустым "телом". Когда ты выходишь из этого цикла на следующую строку, то i уже равно 4, и при попытке обращения к элементу массива - выход за границы, ошибка...

Добавлено через 1 мин.
P.S. Во втором цикле будет то же самое, убирай ";" сразу и там тоже...

Автор: Rocket 28.10.2007 20:47

Как организовать доступ к элементам массива А через указатель pА, где pА <двойной> указатель на целое, получающий адрес массива А?

Автор: volvo 28.10.2007 20:57

Это здесь к чему? Или ты решил все вопросы с массивами задавать сюда?

Ну, вот так можно:

    int **pA = (int **)a;
for(i = 0; i < 4*5; ++i)
printf("%d ", *(pA + i));


Автор: Rocket 28.10.2007 21:45

Цитата(volvo @ 28.10.2007 17:57) *

Это здесь к чему? Или ты решил все вопросы с массивами задавать сюда?

Если это возможно, то я так и планирую. Спасибо за подсказку)