C++ Pointers to Structure

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 and d.inch are equivalent. Similarly, (*ptr).feet and d.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();
Did you find this article helpful?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community