Google
 
Webnews.only-4-geeks.com
Interesting places
news.only-4-geeks.com Forum Index » C

Cast to pointer to multidimensional array

 
Jump to:  
 
Szabolcs Borsanyi
PostPosted: Fri Jun 06, 2008 6:59 am    Post subject: Cast to pointer to multidimensional array
       
Dear All,

there have been several threads on multidimensional arrays and pointers
to arrays, there is still something I could not fully understand.
(My point here I have raised already, but stayed unanswered)

Let's have an array.

float A[256];

And you would like to consider this as 32x8 matrix.
You can of course do A[32*i+j] for the (i,j)-th element, but it is
much more convenient to put it into an array form:

float (*B)[8]=(void*)A;

The (void*) here is merely to shut up the compiler (ie. to fulfil the language
constraints). B is a pointer to the first one of a series (float[8]) arrays.

Then, after using this layout of the data, I realise that I need an other
matrix format: 16x16, so I write.

float (*C)[16]=(void*)A;

So far there was no cast to a pointer to multidimensional array,
but you could actually want a 4x4x4 tensor and declare:

float (*D)[4][4]=(void*)A;

Is there any undefined behaviour in these casts or the subsequent access
to the members B[i][j] and C[i][j] or D[i][j][k] (i,j,k within bounds)?

Final question:

If my initial array is given by a restricted pointer to its first element,
how can I legally proceed to do these casts?

Szabolcs
 

Page 1 of 1 .:.

Google
 
Webnews.only-4-geeks.com

Windows Update | C++ | C | PHP | JavaScript | Photoshop | Programming | Windows 2000 | Python | Windows XP | Object | Flash | Flash - ActionScript | Paint Shop Pro | Excel | PowerPoint | Access | Word | Windows 98 | Internet Explorer 6.0 | CorelDraw12 | Java | XML | asm x86 | Linux Mandrake | Linux RedHat | Outlook |  | news from newsgroups |_ | s

Web Templates

Awesome Website Templates ©

srebro odżywki Odzyskiwanie danych kuchnie nowoczesne Ciekawe artykuły