Solved

Accessing structures in functions in C++

Posted on 2000-03-20
6
275 Views
Last Modified: 2010-04-02
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!

0
Comment
Question by:nicolac
6 Comments
 
LVL 2

Accepted Solution

by:
xLs earned 50 total points
Comment Utility
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
 
LVL 10

Expert Comment

by:RONSLOW
Comment Utility
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
 

Expert Comment

by:kaushikg
Comment Utility
Both person has replied correctly but RONSLOW's explanation is easy to understand.
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 13

Expert Comment

by:Kelvin_King
Comment Utility
what does the -> mean ?
0
 
LVL 10

Expert Comment

by:RONSLOW
Comment Utility
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
 

Author Comment

by:nicolac
Comment Utility
Thanks, I understand now :)
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
Article by: SunnyDark
This article's goal is to present you with an easy to use XML wrapper for C++ and also present some interesting techniques that you might use with MS C++. The reason I built this class is to ease the pain of using XML files with C++, since there is…
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now