# Thread: Convert a two-dimensional array to a one demensional array

1. ## Convert a two-dimensional array to a one demensional array

Well the title pretty much explains itself...anyone know how to do this?

2. Yes. Pointer arithmetic and/or cast

3. so if i had an array for example power[8][7], i would cast it how?

4. power1D[56] == power2D[8][7]

5. Of course you can't assign arrays-as-a-whole. But you could do int *power1D=power2D[8][7], and pretend that power1D has 56 elements.

6. so it must have that pointer

7. You could use a real array if you want, instead of a pointer. But you'd have to use a big ol' for-loop to get all the numbers in the new array.

8. ok ill go with the pointer

9. As long as you access the 2D array elements in their proper storage order you can use either a pointer with an offset or a subscripted array.
The thing to remember is to walk along the 2D array correctly knowing that the rightmost subscript varies fastest.

10. so does this work NROWS being 8 and NCOLS being 7
Code:
int i, j, k;
int power1d[56];

for(i = 0; i<NROWS; i++)
{
for(j=0; j<NCOLS; j++)
{
for(k=0; k <56; k++)
power1d = power[i][j];
}}

11. Originally Posted by belkins
so does this work NROWS being 8 and NCOLS being 7
Code:
int i, j, k;
int power1d[56];

for(i = 0; i<NROWS; i++)
{
for(j=0; j<NCOLS; j++)
{
for(k=0; k <56; k++)
power1d = power[i][j];
}}
No. You can never assign to the name of an array. Fortunately, you don't want to assign the name of an array, but to a particular slot in the array.

12. does another array need to be declared?

13. Originally Posted by belkins
does another array need to be declared?
Of course not.

14. do i declare the 2-d array as one-d then

15. Originally Posted by belkins
do i declare the 2-d array as one-d then
Well, wait. I thought you meant another another array. The one one-d array you already have is fine. But you have to assign to array[something], not just array.