C++ 指向结构体的指针
提示
- 创建结构体指针:在C++中,可以为用户自定义的类型如结构体创建指针,例如使用
temp *ptr;
来创建指向结构体temp
的指针。 - 结构体成员的访问:通过指针访问结构体的成员时,可以使用箭头操作符
->
或者通过解引用指针((*ptr).member
)的方式,例如ptr->feet
或(*ptr).feet
。 - 指针与结构体实例的互动:指针可以指向结构体的实例,并通过该指针对结构体成员进行读写操作。在示例中,指针
ptr
指向结构体Distance
的实例d
,然后通过ptr
来输入和输出d
的成员数据。
不仅可以为原生类型(如 int
、float
、double
等)创建指针变量,而且还可以为用户定义的类型(如结构体)创建指针。
如果您不了解指针是什么,请访问 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
显示信息。
距离 = 4 脚 3.5 英寸
在这个程序中,定义了一个 Distance 类型的指针变量 ptr 和普通变量 d。
将变量 d 的地址存储到指针变量 ptr 中,即 ptr 指向变量 d。然后,使用指针访问变量 d 的成员函数。
注意:
-
由于在本程序中,指针 ptr 指向变量 d,因此
(*ptr).inch
和d.inch
是等价的。类似地,(*ptr).feet
和d.feet
也是等价的。 -
然而,如果我们使用指针,使用
->
运算符访问结构体成员更为可取,因为.
运算符的优先级高于*
运算符。因此,当使用(*ptr).inch
时,我们需要将*ptr
放在括号内。因此,在单个代码中同时使用这两个运算符更容易出错。
ptr->feet 等同于 (*ptr).feet
ptr->inch 等同于 (*ptr).inch