Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Possible to cast a pointer to a certain type of array?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Vanukoff   Members   -  Reputation: 122

Like
Likes
Like

Posted 21 July 2001 - 08:06 AM

I have two structures that look like this:

struct Foo
{
    // stuff
    unsigned char data[ 256 ][ 16 ][ 16 ];
    // other stuff
}

struct Bar
{
    Foo* pfoo;
    // other stuff 
}

 
And I have a function which looks like:

void Funky(Bar* pbar)
{
     // code
     for(int i=0; i<200; i++)
     {
         for(int j=0; j<200; j++)
         {
             // code here uses pbar->pfoo->data[ a ][ b ][ c ];
         }
     }
}

 
I''d like to alias pbar->pfoo->data like this:

void Funky(Bar* pbar)
{
     // code
 
     unsigned char* alias = pbar->pfoo->data;

     for(int i=0; i<200; i++)
     {
         for(int j=0; j<200; j++)
         {
             // code here now uses alias[ a ][ b ][ c ];
         }
     }
}

 
But I cannot do the above alias, because I lose dimensional information. Is there a way to cast ''alias'' so the compiler knows I want the dimensions 256*16*16 ... ?

Sponsor:

#2 stevenmarky   Members   -  Reputation: 349

Like
Likes
Like

Posted 21 July 2001 - 09:52 AM

You don''t have dimentions.
Anyway-its shouldn''t be too hard to convert the three to a linear.
Or alternately create an array of pointers to the array, and use it in the same way as your normal array.

#3 Vanukoff   Members   -  Reputation: 122

Like
Likes
Like

Posted 21 July 2001 - 12:01 PM


Yeah, I could''ve used it as a linear, but didn''t want to clutter that line (the real code is more complex). I got it working by doing this:



unsigned char (*alias)[16][16] = pbar->pfoo->data;



Looks really weird, but it works.







Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS