Skip to main content
GameDev.net gamedev.net
🔒 Locked

Struct member offsets

Started by Tispe Mar 28, 2012 at 11:54 AM 1 replies 1k views
Original Post
Tispe
Tispe
Hi

Say you have a char pointer "p" to an array of characters. Now p+1 would give you the second character and so on.

The same applies for structs. If a struct is 40 Bytes long, then structobject+1 increments by 40 bytes.

How does this applies to members of a struct?


struct MyStruct
{
int no;
int idx_x,idx_y,idx_z;
float tx,ty,tz,tw;
};


MyStruct &pData = ArrayOfMyStructs[47];
int offset = 3;
pData.no+offset; //Where is this address?


Does pData.no+offset; refer to ArrayOfMyStructs[50].no, or does it refer to ArrayOfMyStructs[47].idx_z?
Brother Bob
Brother Bob
When pData is a pointer, then pData.no is not valid syntax to begin with. But even if you meant pData->no, then pData->no+3 simply means the value of the no-member plus three.

If, on the other hand, you meant (&pData->no)+3, then that is equivalent to int *pNo=(&pData->no); pNo+3 which moves an int-pointer three steps forwards. In practice, that would mean it likely points to ArrayOfMyStructs[47].idx_z.
Tispe
Tispe
Thank you

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.