Кому принадлежит массив?
Это очень важно, потому что некоторая часть кода должна полностью владеть (создавать, удалять) массивом.Другие части кода могут читать и записывать.
С этой философией я бы изменил код так, чтобы функция 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");
}
}
Потратив несколько минут на поиск, я нашел хорошее обсуждение многомерного массива в C .
Еще один комментарий на стороне.пожалуйста, обратите внимание, что я сделал несколько других изменений в коде, некоторые из них - дизайн (например, использование enum
вместо #define
, объявление переменных (i
, j
в большинстве локальных областей), в то время как некоторые форматируют.в основном для общения с другими программистами, поэтому читабельность кода очень важна.