A pointer variable can be created not only for built-in types like (int
, float
, double
etc.) but they can also be created for user defined types like structure.
If you do not know what pointers are, visit C++ pointers.
Example: Pointers to Structure
#include <iostream>
using namespace std;
struct Distance {
int feet;
float inch;
};
int main() {
Distance d;
Distance* ptr = &d;
cout << "Enter feet: ";
cin >> (*ptr).feet;
cout << "Enter inch: ";
cin >> (*ptr).inch;
cout << "Displaying information." << endl;
cout << "Distance = " << (*ptr).feet << " feet " << (*ptr).inch << " inches";
return 0;
}
Output
Enter feet: 4 Enter inch: 3.5 Displaying information. Distance = 4 feet 3.5 inches
Here, the address of variable d is stored in the pointer variable ptr, which means ptr is pointing to variable d.
Distance* ptr = &d;
Then, the member function of variable d is accessed using the pointer.
cin >> (*ptr).feet;
Notes:
- Since pointer ptr is pointing to variable d in this program,
(*ptr).inch
andd.inch
are equivalent. Similarly,(*ptr).feet
andd.feet
are equivalent. - Since the
.
operator has a higher precedence than the*
operator, we enclose*ptr
in brackets when using(*ptr).inch
.
Arrow (->) Operator
We can use the arrow (->) operator to access member variables and member functions of a structure variable through a pointer.
Accessing Member Variable Using Arrow (->) Operator Example
#include <iostream>
using namespace std;
struct Distance {
int feet;
float inch;
};
int main() {
Distance d;
Distance* ptr = &d;
cout << "Enter feet: ";
cin >> ptr->feet;
cout << "Enter inch: ";
cin >> ptr->inch;
cout << "Displaying information." << endl;
cout << "Distance = " << ptr->feet << " feet " << ptr->inch << " inches";
return 0;
}
Output
Enter feet: 4 Enter inch: 3.5 Displaying information. Distance = 4 feet 3.5 inches
Here, the address of variable d is stored in the pointer variable ptr which means ptr is pointing to variable d.
Distance* ptr = &d;
Then, the member variable of variable d is accessed using the pointer.
cin >> ptr->feet;
Note: (*ptr).inch
and ptr->inch
are equivalent.
Accessing Member Function Using Arrow (->) Operator Example
#include <iostream>
using namespace std;
struct Distance {
int feet;
float inch;
void print_distance() {
cout << "Displaying Information." << endl;
cout << "Distance = " << feet << " feet " << inch << " inches";
}
};
int main() {
Distance d;
Distance* ptr = &d;
cout << "Enter feet: ";
cin >> ptr->feet;
cout << "Enter inch: ";
cin >> ptr->inch;
ptr->print_distance();
return 0;
}
Output:
Enter feet: 4 Enter inch: 3.5 Displaying Information. Distance = 4 feet 3.5 inches
Here, the member function of variable d is accessed using the pointer.
ptr->print_distance();