跳到主要内容

C++ 指向结构体的指针

提示
  1. 创建结构体指针:在C++中,可以为用户自定义的类型如结构体创建指针,例如使用temp *ptr;来创建指向结构体temp的指针。
  2. 结构体成员的访问:通过指针访问结构体的成员时,可以使用箭头操作符->或者通过解引用指针((*ptr).member)的方式,例如ptr->feet(*ptr).feet
  3. 指针与结构体实例的互动:指针可以指向结构体的实例,并通过该指针对结构体成员进行读写操作。在示例中,指针ptr指向结构体Distance的实例d,然后通过ptr来输入和输出d的成员数据。

不仅可以为原生类型(如 intfloatdouble 等)创建指针变量,而且还可以为用户定义的类型(如结构体)创建指针。

如果您不了解指针是什么,请访问 C++ 指针

以下是创建结构体指针的方法:

#include <iostream>
using namespace std;

struct temp {
int i;
float f;
};

int main() {
temp *ptr;
return 0;
}

此程序创建了一个类型为结构体 temp 的指针 ptr。

示例:结构体指针

#include <iostream>
using namespace std;

struct Distance {
int feet;
float inch;
};

int main() {
Distance *ptr, d;

ptr = &d;

cout << "输入脚数:";
cin >> (*ptr).feet;
cout << "输入英寸数:";
cin >> (*ptr).inch;

cout << "显示信息。" << endl;
cout << "距离 = " << (*ptr).feet << " 脚 " << (*ptr).inch << " 英寸";

return 0;
}

输出

输入脚数:4
输入英寸数:3.5
显示信息。
距离 = 43.5 英寸

在这个程序中,定义了一个 Distance 类型的指针变量 ptr 和普通变量 d。

将变量 d 的地址存储到指针变量 ptr 中,即 ptr 指向变量 d。然后,使用指针访问变量 d 的成员函数。

注意:

  • 由于在本程序中,指针 ptr 指向变量 d,因此 (*ptr).inchd.inch 是等价的。类似地,(*ptr).feetd.feet 也是等价的。

  • 然而,如果我们使用指针,使用 -> 运算符访问结构体成员更为可取,因为 . 运算符的优先级高于 * 运算符。因此,当使用 (*ptr).inch 时,我们需要将 *ptr 放在括号内。

    因此,在单个代码中同时使用这两个运算符更容易出错。

ptr->feet 等同于 (*ptr).feet
ptr->inch 等同于 (*ptr).inch