|
Pointers and structs
In the examples above, all the
structs are manipulated as objects. However, like any piece of storage,
you can take the address of a struct object (as
seen in SelfReferential.cpp above). To select the elements of a
particular struct object, you use a ‘.’, as seen
above. However, if you have a pointer to a struct object, you must select
an element of that object using a different operator: the
‘->’. Here’s an example:
//: C03:SimpleStruct3.cpp
// Using pointers to structs
typedef struct Structure3 {
char c;
int i;
float f;
double d;
} Structure3;
int main() {
Structure3 s1, s2;
Structure3* sp = &s1;
sp->c = 'a';
sp->i = 1;
sp->f = 3.14;
sp->d = 0.00093;
sp = &s2; // Point to a different struct object
sp->c = 'a';
sp->i = 1;
sp->f = 3.14;
sp->d = 0.00093;
} ///:~
In main( ), the struct
pointer sp is initially pointing to s1, and the members of
s1 are initialized by selecting them with the ‘->’
(and you use this same operator in order to read those members). But then
sp is pointed to s2, and those variables are initialized the same
way. So you can see that another benefit of pointers is that they can be
dynamically redirected to point to different objects; this provides more
flexibility in your programming, as you will learn.
For now, that’s all you need to
know about structs, but you’ll become much more comfortable
with them (and especially their more potent successors, classes) as the
book
progresses.
|
|