Codor의 솔루션이 C++의 코딩 스타일을 가장 잘 준수한다고 생각하지만 C 언어로 된 솔루션을 공유하고 싶습니다.
#include <iostream>
typedef int (*pint2)[2]; //pint2 is a pointer to an array of 2 ints
int main()
{
int arr[4] = { 0, 1, 2, 3 };
pint2 parr = (pint2)arr;
std::cout << parr[0][0] << std::endl;
std::cout << parr[0][1] << std::endl;
std::cout << parr[1][0] << std::endl;
std::cout << parr[1][1] << std::endl;
getchar();
return 0;
}
희망이 있습니다. (또는 적어도 당신이 흥미있는 것을 발견했다 : /)
편집 : 가변 길이의 배열에 대해서!
#include <iostream>
int main()
{
int arr[12] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
const int sizeofarr = sizeof(arr)/sizeof(arr[0]); //Number of elements in array
{
const int numofrows = 2; //Number of rows
const int numofcolumns = sizeofarr/numofrows; //Number of columns
typedef int (*pinta)[sizeofarr/numofrows]; //A 2D array of columns of 2
pinta parr = (pinta)arr;
for(int i = 0; i < numofrows; ++i)
for(int j = 0; j < numofcolumns; ++j)
std::cout << parr[i][j] << std::endl;
}
{
const int numofrows = 3; //Number of rows
const int numofcolumns = sizeofarr/numofrows; //Number of columns
typedef int (*pinta)[sizeofarr/numofrows]; //A 2D array of columns of 3
pinta parr = (pinta)arr;
for(int i = 0; i < numofrows; ++i)
for(int j = 0; j < numofcolumns; ++j)
std::cout << parr[i][j] << std::endl;
}
getchar();
return 0;
}
왜 메모리를 명시 적으로 관리 하시겠습니까? 누드 배열을 사용하는 것은 C++ 관용적이지 않습니다. 귀하의 경우에 대한 boost :: multidim 것입니다 (비록 내가 많은 사람들이 부스트에 싫은 내색, 다양한 이유로 알고). http://www.boost.org/doc/libs/1_57_0/libs/multi_array/doc/user.html – datenwolf