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).inchandd.inchare equivalent. Similarly,(*ptr).feetandd.feetare equivalent.
- Since the .operator has a higher precedence than the*operator, we enclose*ptrin 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();