Q:

C++ Array of array initialization and interation

I want to do something like the following example:
#include <iostream>

#include <memory>

using namespace std;

int main()
{

  char *data [][] = {
      { "11", "12", "13", "14" },
      { "21", "22", "23", "24" },
      { "31", "32", "33", "34" },
      { "41", "42", "43", "44" },
  };

   for (auto &item : data)
   {
       for (auto &var : item)
           std::cout << var << " - ";
   }

   return 0;
}

This does not compile: 
$ g++ -std=c++11 -o main *.cpp                                                                                                    
main.cpp: In function 'int main()':                                                                                                     
main.cpp:10:17: error: declaration of 'data' as multidimensional array must have bounds for all dimensions except the first             
   char *data [][] = {                                                                                                                  
                 ^                                                                                                                      
main.cpp:17:22: error: 'data' was not declared in this scope                                                                            
    for (auto &item : data)                                                                                                             
                      ^                                                                                                                 
main.cpp:19:25: error: unable to deduce 'auto&&' from 'item'                                                                            
        for (auto &var : item)  
                     ^     

So:
A) Seens that I cannot declare a multidimensional array without setting its size. Is that correct ?
b) I cannot use the iterator to go through a basic type (like char *[]), only on vectors. Is that correct ?
c) How can I fix that code to make it work. I don´t want to use std::vector
Thanks for helping.

A:

Final solution. Much easier using std::string´s.. No worries about text sizes:
#include <iostream>

#include <memory>
#include <vector>

using namespace std;

int main()
{

  std::vector<std::vector<std::string>> data = {
      { "11", "12", "13", "14" },
      { "21", "22", "23", "24" },
      { "31", "32", "33", "34" },
      { "41", "42", "43", "44" },
  };

   for (auto &item : data)
   {
       for (auto &var : item)
           std::cout << var << " - ";

        std::cout << std::endl;
   }

   return 0;
}

