指针变量不仅可以为内建 类型 (如 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).inch
和d.inch
是等效的。同样,(*ptr).feet
和d.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).inch
和 ptr->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();