Передача двумерного массива в функцию, как указатель - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#define _CRT_SECURE_NO_WARNINGS
#define SIZE_OF_AREA 10
#include <stdio.h>
 
enum type_Of_Cells {EMPTY = 0, SHIP, NEIGHBOR, BEATEN};
 
void print_Area(const enum type_Of_Cells Area[SIZE_OF_AREA][SIZE_OF_AREA], const size_t Size_Of_Area);
 
int main()
{
 
    enum type_Of_Cells area_For_Player1[SIZE_OF_AREA][SIZE_OF_AREA] = { EMPTY };
 
    print_Area(area_For_Player1, SIZE_OF_AREA);
 
    return 0;
}
 
void print_Area(const enum type_Of_Cells Area[SIZE_OF_AREA][SIZE_OF_AREA], const size_t Size_Of_Area)
{
    //Why is it wrong? void print_Area(const enum type_Of_Cells **Area, const size_t Size_Of_Area)
    printf("%s", "  1 2 3 4 5 6 7 8 9 10\n");
    for (size_t i = 0, s = 'A'; i < Size_Of_Area; i++, s++) {
        printf("%c ", s);
        for (size_t j = 0; j < Size_Of_Area; j++) {
            if (EMPTY == Area[i][j]) {
                printf("%s", " ");
            }
            if (SHIP == Area[i][j]) {
                printf("%s", "*");
            }
            if (NEIGHBOR == Area[i][j]) {
                printf("%s", ".");
            }
        }
        puts("");
    }
}
Понял, что опять что-то не понял с указателями. Всем доброго времени суток, нужна помощь. Вроде как понятно, что имя массива - это указатель на первый элемент массива. Однако, при передаче двумерного массива, таким образом
void print_Area(const enum type_Of_Cells **Area, const size_t Size_Of_Area)
в функцию, вместо данных по этому адресу приходит пустота, хотя это тот же адрес, что и в вызывающей функции. Если кто-то понимает, что не так, поясните, пожалуйста.

Решение задачи: «Передача двумерного массива в функцию, как указатель»

textual
Листинг программы
enum type_Of_Cells area_For_Player1[SIZE_OF_AREA][SIZE_OF_AREA]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы