C++ 指针与结构体
在本文中,我们将通过示例了解如何使用指针来访问结构体中的数据。
在 C++ 中,您不仅可以基本类型( 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 << "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
在这个程序中,定义了一个结构体类型的指针变量 ptr
和一个结构体类型的正常变量 d
。
变量 d
的地址存储到指针变量,即 ptr
指向变量 d
. 那么,使用指针访问变量 d
的成员函数。
笔记:
- 在这个程序中,因为指针
ptr
指向变量d
, 因此(*ptr).inch
和d.inch
是等价的。同样,(*ptr).feet
和d.feet
是等价的。 - 但是,如果我们使用指针,则使用
->
运算符访问类成员要好得多。这是因为.
运算符的优先级高于*
运算符。因此,我们在使用(*ptr).inch
时用括号括起来*ptr
。因此,如果在一个代码中同时使用两个运算符,则更容易出错。
ptr->feet 等同于 (*ptr).feet
ptr->inch 等同于 (*ptr).inc