Jump to content

View more

Image of the Day

#ld38 #screenshotsaturday Mimosa Fizz action gif #2 https://t.co/TUzdppvfUL
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

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

4: Adsense

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   

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 ... ?

#2 stevenmarky   Members   

369
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   

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.