Может ли статический массив, объявленный в main
, инициализироваться/мутировать в функции?Инициализация статического массива в функции в C
Я пробовал код ниже, но он возвращает ошибку seg.
void initialize(int **p, int a, int b)
{
int i, j;
for(i=0; i<a; ++i) {
for(j=0; j<b; ++j)
p[i][j] = j;
}
}
int m = 5;
int n = 5;
int arr[m][n];
int **A = &arr[0][0];
initialize(A, m, n);
EDIT:
Я нашел хорошее объяснение этого вопроса здесь:
http://c-faq.com/aryptr/pass2dary.html
'A' is ** not **' int ** 'То, что вы сказали, что они были синонимами, неверно. – WhozCraig
Этот код не должен компилироваться: http://ideone.com/OCCB95. –
@WhozCraig. Я редактировал код.Я фактически создал двойной указатель на статический массив. – Ares