Re: Interesting Error
Michael Barton <[email protected]> Thu, 1 Dec 2005 21:17:30 -0600
| Newsgroups | gmane.games.devel.mud.rom |
|---|---|
| Message-ID | <[email protected]> |
True, but char ** is a pointer to a pointer and char [][] is a multi-dimensional array. They're completely different animals. You can try it out and see that A) the compiler throws a warning and B) it doesn't work. On 12/1/05, Yorch <[email protected]> wrote: > An array is implemented as a pointer, the name of the array is a > pointer, so it's the same thing. > > On 12/1/05, Michael Barton <[email protected]> wrote: > > No, that would be the equivalent of > > char *token[] // array of pointers > > not > > char token[][] // array of arrays. > > > > You have to know the size of every dimension in the array except the > > last one to do anything with it. Usually that's all done by the > > compiler. If you know the size of the array at run time, it's > > possible to fudge it by doing the array indexing math yourself, but > > you'd have to stretch quite a bit to come up with an example where > > it's useful: > > > > void blah(char *token, int width) > > { > > printf("token: %c\n", token[width * 2 + 1]); > > // token[2][1] -- that's the math the compiler would normally do > > } > > > > int main() > > { > > char token[4][3]; > > token[2][1] = 'c'; > > blah((char *)token, 3); // send it the width of the array > > return 0; > > } > > > > > > On 12/1/05, Yorch <[email protected]> wrote: > > > You can define it this way: > > > > > > void blah(char **token); > > > > > > this way you won't need to use the size and you can use that pointer > > > like a 2D array. > > > > > > On 11/30/05, [email protected] <[email protected]> wrote: > > > > Gah, I am not surprised I figured out the problem 5 minutes I send it to the > > > > list. > > > > > > > > Though, to create some discussion on the list, I will ask this: > > > > > > > > Why cannot we define like so: > > > > void blah(char token[][]) > > > > but: > > > > void blah(char token[][size])? > > > > > > > > Enlighten me! :D > > > > > > > > > > > > > > > > Quoting [email protected]: > > > > > > > > > > > > > > > > > > > So, I am trying to pass a 2D char variable to a function and then do some > > > > > stuff > > > > > with it. However, I am receiving this error and I am not quite sure why: > > > > > > > > > > "arithmetic on pointer to an incomplete type" > > > > > > > > > > Poking around the internet hasn't lead me to anywhere interesting. I thought > > > > > it > > > > > was just my compiler on the linux box so I wrote a test program in dev-c++ so > > > > > we can see if that was so. This is written and is compiled in C: > > > > > > > > > > void blah(char token[][]); > > > > > > > > > > int main() > > > > > { > > > > > char token[1][1]; > > > > > > > > > > token[0][0] = 'c'; > > > > > > > > > > blah(token); > > > > > > > > > > return 0; > > > > > } > > > > > > > > > > void blah(char token[][]) > > > > > { > > > > > printf("token: %c\n", token[0][0]); > > > > > } > > > > > > > > > > It generates the same error. > > > > > > > > > > I am assuming, as usual, that it is something obvious and after spending > > > > > hours > > > > > (a good 4 hours straight) smashing my keyboard my eyes have gone out of > > > > > control! > > > > > > > > > > Thank you! > > > > > > > > > > > > > > > ---------------------------------------------------------------- > > > > > This message was sent using IMP, the Internet Messaging Program. > > > > > > > > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------- > > > > This message was sent using IMP, the Internet Messaging Program. > > > > -- > > > > ROM mailing list > > > > [email protected] > > > > Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom > > > > > > > -- > > > ROM mailing list > > > [email protected] > > > Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom > > > > > -- > > ROM mailing list > > [email protected] > > Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom > > > -- > ROM mailing list > [email protected] > Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom > -- ROM mailing list [email protected] Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom