最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

那些年C++ 结构篇:C++ 指向结构的指针

XAMPP相关 admin 422浏览 0评论

第二十七章:C++ 指向结构的指针

在此篇教程中,你将通过示例程序来了解:怎么使用指针来访问结构中的数据。

指针变量不仅可以为常见变量类型(如:(intfloatdouble 等))所创建,也可以为用户定义的变量类型(如:结构)所创建。

如果你不知道何为指针,请访问后续教程:『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  等价

内存分配如下:

dra0015

 

 

程序算法实验室 zhangJA-Lab

转载请注明:XAMPP中文组官网 » 那些年C++ 结构篇:C++ 指向结构的指针

您必须 登录 才能发表评论!