第二十七章: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 m;
float cm;
};
int main() {
Distance *ptr, d;
ptr = &d;
cout << "请输入多少米: ";
cin >> (*ptr).m;
cout << "请输入多少厘米: ";
cin >> (*ptr).cm;
cout << "显示的信息:" << endl;
cout << "长度 = " << (*ptr).m << " 米 " << (*ptr).cm << " 厘米";
return 0;
}
输出:
你输入多少米: 8 请输入多少厘米: 18.8 显示的信息: 长度 = 8 米 18.8 厘米
代码解读:
在上面的程序中,我们定义了一个Distance结构体类型的指针变量ptr和一个普通变量d。
接着,将变量d的地址(即&d)存储到指针变量ptr中,即ptr指向变量d。然后,使用指针访问变量d的成员函数,如下:
注意:
• 由于在这个程序中的指针ptr指向变量d,所以(*ptr).m 与 d.m是等价的。同样,(*ptr).cm 与d.cm是等价的。
• 但是,如果使用指针,则通过使用->运算符访问类成员比较恰当。这是因为.运算符的优先级高于*运算符。因此,我们在使用(*ptr).m时,必须切记将*ptr扩在括号中。因为在一个代码中同时使用两个运算符,则更容易出错。
其中:
ptr->m 与 (*ptr).m 等价 ptr->cm 与 (*ptr).cm 等价
内存分配如下:
程序算法实验室 zhangJA-Lab
转载请注明:XAMPP中文组官网 » 那些年C++ 结构篇:C++ 指向结构的指针