#include <iostream>

void printGrid(bool (&a)[10][10])
{
    static_assert(10 == sizeof(a) / sizeof(*a), "unexpected size");

    for(std::size_t i = 0; i < sizeof(a) / (sizeof(*a)); i++) {
        for(std::size_t j = 0; j < sizeof(a) / (sizeof(*a)); j++) {
            char x = a[i][j] ? '#' : '?';
            std::cout << x;
        }
        std::cout << std::endl;
    }
}
int main()
{
    bool grid[10][10];
    for(std::size_t i = 0; i < sizeof(grid) / sizeof(*grid); i++) {
        for(std::size_t j = 0; j < sizeof(grid) / sizeof(*grid); j++) {

            grid[i][j] = true;
        }
    }
    printGrid(grid);                                      // this doesn't work
    std::cout << ((grid[0][1]) ? "#" : "?") << std::endl; // this works fine
}
