• 数据结构(Data structures)(二):结构体指针


    Pointers to structures

    像其它数据类型一样,结构体也可以有指针。可以被它自己的类型的指针所指向。其规则同其它基本数据类型一样:

        struct movies_t{

        string title;

        int year;

        };

        movies_t amovie;

        movies_t* pmovie;

    这里 amovie 是一个结构体 movies_t 的对象,而pmovie 是一个指向结构体movies_t 的对象的指针。所以,同基本数据类型一样,以下表达式也是正确的:

        pmovie = &amovie;

    现在,让我们看一个包含有指针和结构体的例子,这里我们将引入一个新的操作符——箭头操作符(->):

    #include <iostream>
    #include <string>
    #include <sstream>

    using namespace std;

    struct movies_t
    { string title; int year; };
    int main () { string mystr; movies_t amovie; movies_t * pmovie; pmovie = &amovie; cout << "Enter title: "; getline (cin, pmovie->title); cout << "Enter year: "; getline (cin, mystr); (stringstream) mystr >> pmovie->year; cout << " You have entered: "; cout << pmovie->title; cout << " (" << pmovie->year << ") "; return 0; }
    Enter title: Invasion of the body snatchers
    Enter year: 1978
     
    You have entered:
    Invasion of the body snatchers (1978)

    上面的代码中引入了一个重要的操作符:->。这是一个间接引用操作符,常与结构体或类指针一起使用,以便引用其中的成员元素,例如:

        pmovie -> title;

    与语句:

        (*pmovie).title;

    是等价的。

    以上两种表达式 pmovie ->title 和 (*pmovie).title 都是合法的,都表示取指针pmovie 所指向的结构其元素title 的值。我们要清楚将它和以下表达区分开

        *pmovie.title;

    它等价于:

        *(pmovie.title);

    表示取结构pmovie 的元素title 作为指针所指向的值,这个表达式在本例中没有意义,因为title本身不是指针类型。

    下表中总结了指针和结构组成的各种可能的组合:

    表达式 描述 等价于
    pmovie.title 结构体pmovie 的元素title  
    pmovie->title 指针pmovie 所指向的结构体其元素title 的值 (*pmovie).title
    *pmovie.title 结构体pmovie 的元素title 作为指针所指向的值 *(pmovie.title)



  • 相关阅读:
    跨域请求携带cookie
    vue单文件组件实例1:简单单文件组件
    vue单文件组件实例2:简单单文件组件
    vue路由1:基本使用
    项目中常用的javascript/jquery操作
    vue计算属性和侦听器
    专题8:javascript中事件
    普通文件的上传(表单上传和ajax文件异步上传)
    python导入包出错:ImportError: No module named XXXXX

  • 原文地址:https://www.cnblogs.com/guozqzzu/p/3625577.html
Copyright © 2020-2023  润新知