@Gagatyn
Самоучка

Как написать указатель на двумерный массив?

Здравствуйте! Подскажите пожалуйста.
Почему Clion не хочет компилировать:
int main() {
    int a[5][5], i, j, c = 1, **p;
    for(i = 0; i < 5; i++) {
        for(j = 0; j < 5; j++) {
            a[i][j] = c++;
            printf("|%.2d| ", a[i][j]);
        } puts("");
    }
   **p = a;  //<-------------- в чем ошибкаааааа??
    printf("%d\n", *(*(p + 2) + 3));
    return 0;
}
  • Вопрос задан
  • 1393 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
В вашем случае достаточно:
int *p;
p = (int*)a;

Или если с двойным указателем, то так:
p = &a;
Но дальше в printf у вас все равно будет ошибка.

Двойной указатель обычно нужен для создания двумерных массивов типа "хребет". В случае обычного (плоского) массива, как у вас, хватает и обычного указателя, не зависимо от количества размерностей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы