C++ 结构体指针

指针变量不仅可以为内建 类型 (如 int, float, double 等) 创建,也可以为用户自定义类型,如 结构体 创建。

如果你不知道指针是什么,请访问 C++ 指针


示例:结构体指针

#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;
}

输出

Enter feet: 4
Enter inch: 3.5
Displaying information.
Distance = 4 feet 3.5 inches

在此,变量 d 的地址被存储在指针变量 ptr 中,这意味着 ptr 指向变量 d

Distance* ptr = &d;

然后,使用指针访问变量 d 的成员函数。

cin >> (*ptr).feet;

注意事项

  • 在这个程序中,由于指针 ptr 指向变量 d,因此 (*ptr).inchd.inch 是等效的。同样,(*ptr).feetd.feet 也是等效的。
  • 由于 . 运算符的 优先级 高于 * 运算符,因此我们在使用 (*ptr).inch 时将 *ptr 包含在括号内。

箭头 (->) 运算符

我们可以使用箭头 (->) 运算符通过指针访问结构体变量的成员变量和成员函数。


使用箭头 (->) 运算符访问成员变量示例

#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;
}

输出

Enter feet: 4
Enter inch: 3.5
Displaying information.
Distance = 4 feet 3.5 inches

在此,变量 d 的地址被存储在指针变量 ptr 中,这意味着 ptr 指向变量 d

Distance* ptr = &d;

然后,使用指针访问变量 d 的成员变量。

cin >> ptr->feet;

注意: (*ptr).inchptr->inch 是等效的。


使用箭头 (->) 运算符访问成员函数示例

#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;
}

输出

Enter feet: 4
Enter inch: 3.5
Displaying Information.
Distance = 4 feet 3.5 inches

在此,使用指针访问变量 d 的成员函数。

ptr->print_distance();
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战