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 << "\nYou have entered:\n";cout << pmovie->title;cout << " (" << pmovie->year << ")\n";return 0;
}
Enter title: Invasion of the body snatchers
Enter year: 1978You 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)

转载于:https://www.cnblogs.com/guozqzzu/p/3625577.html

数据结构(Data structures)(二):结构体指针相关推荐

  1. c语言结构体指针->基本使用

    基本用法 "->"是一个整体,它用于指向结构体子数据的指针,用来取子数据. 换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出 ...

  2. c语言结构内部定义指针,C语言知识补漏(一)结构体指针以及位域定义

    一.结构体指针 typedef struct { unsigned long int DATA; unsigned long int DIRECTION; unsigned long int INTE ...

  3. c语言结构体学习整理(结构体初始化,结构体指针)

    渣渣c的c语言学习之路 1.关于c语言的结构体: 首先我们为什么要用到结构体,我们都已经学了很多int char -等类型还学到了同类型元素构成的数组,以及取上述类型的指针,在一些小应用可以灵活使用, ...

  4. Linux C 深入分析结构体指针的定义与引用

    关于结构体的基础知识,网上书上都一大堆,这里就不赘述了,下面我们要学习的是结构体指针. 介绍结构体指针之前,先给大家看一个小程序: [cpp] view plaincopy #include < ...

  5. 定义一个结构体指针需要分配存储空间?

    前言 问题的来源于在学数据结构的时候,C++的语法和C语言的语法竟然不一样. 1.首先函数的参数有两种传递方式,一个是值传递,一个是地址传递.当指针作为参数传递的时候,即为地址传递,但C++写的时候需 ...

  6. 结构体指针和结构体指针变量的区别

    文章目录 前言 一.普通结构体变量 二.结构体指针变量 三.结构体指针 完整代码如下: 前言 结构体变量主要有三种应用场景:1.普通结构体变量:2.结构体指针变量:3.结构体指针. 一.普通结构体变量 ...

  7. 结构体指针变量的定义

    最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用. 1.结构体类型定义 定义方式1: Typedef struct LNode {int da ...

  8. C语言结构体与结构体指针的使用

    C语言结构体与结构体指针的使用 tips:最近要好好学习一下数据结构,所以必不可少的就是c语言的结构体和结构体指针了,所以就整理一下这些基础知识 c语言结构体(struct)是由一系列具有相同类型或不 ...

  9. c语言中定义结构体指针的作用,C语言结构体定义,使用及指针(1)

    前言 C语言中的结构体作为一大难点,并且对于需要学习数据结构的同学来说,这个结构是每次上课都会遇到的,所以,我们只有更深层次的理解结构体的知识,才能更好的掌握数据结构 结构体用处 结构体到底有什么用? ...

最新文章

  1. 【MySQL】数据库2- MySQL表的增删改查(基础)
  2. Javascript-入门
  3. 【 POJ - 2033 】Alphacode (dp,有坑)
  4. C++学习之路 | PTA乙级—— 1049 数列的片段和 (20 分)(精简)
  5. 杀死 Oculus ,Facebook 改名 Meta ,是押注元宇宙还是“金蝉脱壳”?
  6. 01.php面向对象
  7. 尚硅谷 硅谷新闻_如果每个人都遥不可及,硅谷会损失什么
  8. 百胜中国于香港联交所主要上市;平安健康正式收购平安智慧医疗 | 美通企业日报...
  9. 贝叶斯网络(Belief Networks)--模型及方法
  10. 基于PHP开发的外卖订餐网站(带源码)
  11. mcgscom口针脚定义_触摸屏制作的速成篇(MCGS入门篇)
  12. block locality
  13. 华为鸿蒙新闻发布会,华为鸿蒙2.0、EMUI 11齐发 打通手机、电视、PC全平台
  14. 转载——天才与锻炼(华罗庚)
  15. android从九宫格全屏预览,仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图...
  16. 2021年电影市场票房波动模型分析思路及参考代码
  17. PHPMyWind支持PowerPoint上传
  18. 英语进阶系列-A05-英语升级练习三
  19. 创建一个成功的NFT,总共分几步?
  20. 三星HDM Odyssey适配SteamVR

热门文章

  1. 基础命令之cd,mkdir,cp,ls
  2. LVS+Heartbeat+Ipvsadm+Ldirectord安装(四)
  3. 你是我一首唱不完的歌
  4. 十招搞定SQL2K安全
  5. dns服务器漏洞修复,KB4569509:DNS 服务器漏洞 CVE-2020-1350 指南
  6. Spring 的前世今生
  7. HTTP协议通信原理
  8. 用户中心 - 查询用户信息
  9. 使用RSA算法生成令牌
  10. 区域数据导入功能(在服务端接收上传文件)