# C++ 结构指针

> 原文： [https://www.programiz.com/cpp-programming/structure-pointer](https://www.programiz.com/cpp-programming/structure-pointer)

#### 在本文中，您将找到相关的示例，这些示例将帮助您使用指针来访问结构中的数据。

不仅可以为本地类型（`int`，`float`，`double`等）创建[指针](/cpp-programming/pointers "C++ pointers")变量，还可以为用户定义的类型（例如[结构](/cpp-programming/structure "C++ structures")）创建变量 ]。

如果您不知道什么是指针，请访问 [C++ 指针](https://www.programiz.com/cpp-programming/pointers)。

这是如何为结构创建指针：

```cpp
#include <iostream>
using namespace std;

struct temp {
    int i;
    float f;
};

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

该程序创建类型结构为`temp`的指针`ptr`。

* * *

## 示例：结构指针

```cpp
#include <iostream>
using namespace std;

struct Distance
{
    int feet;
    float inch;
};

int main()
{
    Distance *ptr, d;

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

**输出**

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

在该程序中，定义了类型结构为`Distance`的指针变量`ptr`和普通变量`d`。

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

**注意**：由于指针`ptr`指向此程序中的变量`d`，因此`(*ptr).inch`和`d.inch`是完全相同的单元格。 同样，`(*ptr).feet`和`d.feet`是完全相同的单元格。

使用指针访问成员函数的语法很丑陋，还有更常见的替代符号`->`。

```cpp
ptr->feet is same as (*ptr).feet
ptr->inch is same as (*ptr).inch
```