hey there. my problem is pretty simple (i think). I dont know how to point at a multi dimensional array.how i understand normal array pointers is:

int numbers[5];
int *p = numbers;

//so now *p points to numbers[0]
//so if you say:

*p = 10;

//is the same as saying numbers[0] = 10;

//now by saying:

p++;
*p = 20;

//you are basically saying numbers[1] = 20;

right. thats fine. in my mind thats how it works and it makes me happy. like I said, im a newb. So if i totally misunderstand the workings of pointers please enlighten me. BUT now if i say:

int numbers[4][2];
int *p = numbers;

i get an error that tells me:
"cannot convert `std::string (*)[2]' to `std::string*' in initialization "

so what must i do???
the reason why i want to point to multi-dimensional arrays is basically because i have a [4][4] grid of type string that displays tiles in a 10x10 grid on-screen, like so:

####
#### y
####
####
x

I want to add another type of char to a specific coordinate on THAT SPECIFIC grid, using a function, which is why I am using pointers.

####
#### y
##@#
####
x

but i get an error message :(. hope that explanation helps

thanks

Recommended Answers

All 6 Replies

You can point it to the first y position.

int *p = numbers[0];

Or whichever one you want.

Examples

int numbers[4][2];
int (*p)[2] = numbers;

(*p)[0] = 0;  // numbers[0][0] = 0;

p++; // move to next row
(*p)[0] = 0;  // numbers[1][0] = 0;

Thanks people!! You guys are awesome!
Back to the drawing board...

hmm... just one more thing, if

(*p)[0] = 0; // numbers[1][0] = 0;

refers to numbers[1][0]

then how do you refer to numbers[0][3] for instance? like not the first [], but the second []?

Take a look at this:

int main() {
  int numbers[4][4] = { { 0, 1, 2, 3 }, 
                        { 4, 5, 6, 7 }, 
                        { 0, 9, 8, 7 }, 
                        { 6, 5, 4, 3 } };
  int (*p)[4] = numbers;

  (*p)[0] = 42;
  p++;
  (*p)[3] = 63;

  for ( int y=0, x; y<4; y++ ) {
    for ( x=0; x<4; x++ )
      std::cout<< numbers[y][x] << " ";
    std::cout<< "\n";
  }

  return 0;
}

shot. il go disect that now now and try make sense of it all

cheers and thanks :D

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.