Accessing structures in functions in C++

I have some functions that take in structures, amongst other things.
eg.
int winapi rectangle(SIZES *pInfo);

...where SIZES is a structure. How can I assign values to the variables of the Structure SIZES? I'v tried creating an object of type SIZES and assigning values using the (.)
 SIZES MySizes;  //create a Sizes object
*mySizesPtr=&mySizes, //pointer       &mySizesRef=mySizes;  //reference

mySizes.version = 0x03000000;

But I'm not sure that this is assigning the values to the right place.
Pls can i have a simple example of how to do this correctly. Pls help!

nicolacAsked:
Who is Participating?
 
xLsConnect With a Mentor Commented:
example
int winapi rectangle(SIZES* pInfo)
{
   pInfo->version = 0x0300000;
 SIZES s = *pInfo; // example of copy
}

in method:
{

 SIZES mySize;
 rectangle(&mySize); // '&' since rectangle needs a pointer of SIZES.
 printf("%d", mySize.version);
}



e.g if its a pointer to an instance of SIZES you use -> to assing or extract value or '*' as prefix.

if it is not a pointer you use '.'.


what you did
SIZES MySizes; //MySizes is not a pointer

*mySizesPtr=&mySizes;
// &mySize is the pointer of mySize
// *mySize is invalid because mySize is not a pointer

think of it this way:

*mySize lets you access whatever the pointer holds (its the mySizes instance).

&mySize gives you the pointer of the instance mySize


this is quite anoying to explain but ehm. comment if you need better explaination :)
0
 
RONSLOWCommented:
Two ways...

int winapi rectangle(SIZES *pInfo) {
  pInfo->xxxx = yyy;
}

or

int winapi rectangle(SIZES *pInfo) {
  SIZES& sizes = *pInfo;
  sizes.xxxx = yyyy;
}

The first accesses directly from the pointer with ->

The second uses a reference, and you can then use '.'

Both of the above will change the thing pointed to by pInfo.

If you take a COPY of the thing pointed to by pInfo and change that, then the original is unchanged.



0
 
kaushikgCommented:
Both person has replied correctly but RONSLOW's explanation is easy to understand.
0
Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

 
Kelvin_KingCommented:
what does the -> mean ?
0
 
RONSLOWCommented:
p->x is just shorthand for

(*p).x

ie. it dereferences the pointer to a struct and then gets the member of the struct.

or simpler...

ie. it does a '.' on the object pointed to by p

pointers are a tricky C concept for many to grasp.

even trickier for some is C++ references, which is what I used in the other example.

0
 
nicolacAuthor Commented:
Thanks, I understand now :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.