Прежде всего, ваш код не очень современный C++. Это в основном «c с iostreams».
Прежде всего, printLoop(int p[2][3])
- это подпись, которую вы ищете, хотя и снова, это не лучший способ делать вещи вообще.
В первую очередь, int (*p)[3]
анализируется следующим образом: Начните с имени p
и взгляните вокруг (сначала вправо, , В нем есть только звезда, поэтому вы можете сказать, что p является указателем. Теперь вы рекурсивно повторите тот же анализ, вы видите [3]
, что означает, что p
является указателем на массив, который имеет 3 int
s.
Теперь я хотел бы отметить следующее:
Использование std::array
для статически размера массивов.
Использовать std::vector
для массивов динамического размера.
О, также я сам не буду использовать 2D-массив, они неуклюжи и просто синтаксический сахар (вокруг основного понятия «массив», который также является синтаксическим сахаром).
Так что, возможно, что-то вроде этого, составленное мозг, надеюсь, правильно, C++ 11 злоупотребляя:
std::array<int, 3 * 2> p = {{1, 2, 3, 4, 5, 6}};
std::for_each(std::begin(p), std::end(p), [](int elem){ std::cout<<elem; });
Ницца и денди. Вы также можете иметь лямбда-чек для некоторых размеров «2-мерного массива» и вставлять новые строки, если хотите.
Это действительно хорошо читается: http://c-faq.com/decl/spiral.anderson.html. Из этого, работая против часовой стрелки, вы можете видеть, что 'p' является указателем' * 'на массив' [] '' '' '' '' '' '' '' '' ''. – chris