Кто владеет массив?
Это очень важно, потому что часть кода должна полностью заполнить (создать, удалить) массив. Другие части кода могут читать и писать.
С этой философией я бы изменил код так, чтобы функция main
(в действительности, это может быть любая функция) приобретает право собственности на arr1
. main
создает arr1
и передает его другой функции (может быть в другом модуле) для ее инициализации. Вот модифицированная версия программы.
#include <stdio.h>
enum{ SIZE = 3 };
void initArray(char arr[ SIZE ][ SIZE ]) {
char x = 'A';
for(int i = 0; i < SIZE; i++) {
for(int j = 0; j < SIZE; j++) {
arr[ i ][ j ] = x;
x += 1;
}
}
}
int main()
{
char arr1[ SIZE ][ SIZE ];
initArray(arr1);
for(int i = 0; i < SIZE; i++) {
for(int j = 0; j < SIZE; j++) {
printf("%c, ", arr1[ i ][ j ]);
}
printf("\n");
}
}
После проводить несколько минут в поиске, я нашел good discussion on multi-dimensional array in C.
Еще один комментарий на стороне. обратите внимание, что я сделал пару других изменений в коде, некоторые из них являются дизайном (например, с использованием enum
вместо #define
, объявляя переменные (i
, j
в большинстве локальных областей), в то время как некоторые из них являются форматированием. Программы предназначены в основном для общения с другими человеческими программистами , поэтому читаемость кода очень важно.
Какова ваша ошибка? msg? Как вы знаете, что это неправильно? –
Ошибка. Ошибка вывода. – anonymous
Похоже, вы пытаетесь создать глобальный массив, но маскируете его за функцией. Почему бы просто не определить его в основном? – JoshD