首页 > 其他分享 >定义一个结构体变量stu,成员包括学号、姓名、性别、成绩。定义一个指针变量p指向该结构体变量stu,通过该指针变量输出各成员的值

定义一个结构体变量stu,成员包括学号、姓名、性别、成绩。定义一个指针变量p指向该结构体变量stu,通过该指针变量输出各成员的值

时间:2024-06-17 10:01:36浏览次数:12  
标签:变量 指向 成员 stu num 指针

        一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。

编写程序:

运行结果:

程序分析:

        在主函数中声明了Student类型,然后定义一个Student类型的变量stu。同时又定义一个指针变量p,它指向一个Student类型的数据。将结构体变量stu的起始地址赋给指针变量p,也就是使p 指向stu,然后对stu中的各成员赋值。第1个cout语句的作用是输出stu的各个成员的值。用stu.num 表示stu中的成员num,其余类推。第2个cout语句用(*p)和成员运算符"."输出stu各成员的值,(*p)表示p指向的结构体变量,(*p).num是p指向的结构体变量中的成员num,即stu.num。注意*p两侧的括号不可省略,因为成员运算符"."优先于"*"运算符,*p.num就等价于*(p.num)了。

        两个cout语函数输出的结果是相同的。
        为了使用方便和使之直观,C和C++提供了指向结构体变量的运算符"->",形象地表示"指向"的关系。例如,p->num表示指针 p 当前指向的结构体变量中的成员num。p->num和(*p).num 等价。同样,p->name等价于(*p).name。也就是说,以下3种形式等价:
        ①结构体变量.成员名。如stu.num。
        ②(*p).成员名。如(*p).num。
        ③p->成员名。如p->num。"->"称为指向运算符
        请分析以下几种运算:
        p->n             得p指向的结构体变量中的成员n的值。
        p->n++         得到p指向的结构体变量中的成员n的值,用完该值后使它加1。
        ++p->n         得到p指向的结构体变量中的成员n的值,并使之加1,然后再使用它。

标签:变量,指向,成员,stu,num,指针
From: https://blog.csdn.net/2301_80138271/article/details/139724639

相关文章

  • Large Language Models as Financial Data Annotators: A Study on Effectiveness and
    本文是LLM系列文章,针对《LargeLanguageModelsasFinancialDataAnnotators:AStudyonEffectivenessandEfficiency》的翻译。作为财务数据注释器的大型语言模型:有效性和效率研究摘要引言相关工作数据集实验结果讨论局限性结论摘要由于缺乏领域专......
  • 快慢指针技巧
    快慢指针技巧在说快慢指针之前,我们先说一下双指针。双指针双指针:使用两个指针来解决问题。所谓的指针其实就是指数组的下标,或者链表的节点的地址。我们以数组为例介绍一下。有两个指针分别存储着数组的两个下标,这就是双指针。那快慢指针是什么呢?快慢指针快慢指针,就是一......
  • 【C语言】字符指针
    在指针的类型中我们知道有一种指针类型为字符指针char*;一般使用:intmain(){charch='w';char*pc=&ch;*pc='w';return0;}还有一种使用方式如下:intmain(){constchar*pstr="hellobit.";//这里是把一个字符串放到pstr指针变量里了吗?printf......
  • Android Studio 插件分享——Gradle Utilities
    插件地址GradleUtilities这个插件可以用来管理Gradle相关的文件,同时用来升级Gradle这个插件提供了一些有用的实用程序来支持Gradle的日常工作:列出所有正在运行的Gradle守护进程及其状态。此外,还可以执行终止守护程序或查看其命令行的操作。管理Gradle主页:清除......
  • Android Studio 插件分享——Gradle Utilities
    插件地址GradleUtilities这个插件可以用来管理Gradle相关的文件,同时用来升级Gradle这个插件提供了一些有用的实用程序来支持Gradle的日常工作:列出所有正在运行的Gradle守护进程及其状态。此外,还可以执行终止守护程序或查看其命令行的操作。管理Gradle主页:清除......
  • 视野修炼-技术周刊第88期 | 突出变量插件
    欢迎来到第88期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • 安卓应用开发——Android Studio中This project contains Java compilation errors, w
    这个提示信息表明你的Java项目中存在编译错误,这些错误可能会导致自定义视图(customviews)的渲染失败。要解决这个问题,你需要先修复这些编译问题。以下是一些步骤,你可以按照这些步骤来查找并修复Java编译错误:查看编译错误:在你的集成开发环境(IDE)中,通常会有一个编译错误或警......
  • C++智能指针
    std::unique_ptr:独特所有权模型,一个std::unique_ptr在同一时间内只允许有一个对象实例。它不允许被复制,但可以被移动。std::shared_ptr:共享所有权模型,多个std::shared_ptr可以指向同一对象,通过引用计数机制来管理对象的生命周期。当最后一个指向对象的std::shared_ptr被销毁时,对......
  • #C语言结构体/结构体指针/单链表学习必备总结(浓缩版)#
    一.结构体的定义结构体是一种用户自定义的数据类型,用于将多个不同类型的数据组合在一起形成一个新的数据类型。结构体由多个成员变量组成,每个成员变量可以是不同的数据类型,可以是基本数据类型(如整型、浮点型、字符型等)或其他结构体类型。结构体的成员变量在内存中是按照声明的......
  • 代码随想录刷题记录(8)| 字符串(151.反转字符串里的单词,卡码网:55.右旋转字符串,28. 找出字
    目录(四)反转字符串里的单词1. 题目描述2.思路3.解题过程(1)使用额外空间存储(2)原地反转 (五)右旋转字符串1.题目描述2.思路3.解题过程 (六)找出字符串中第一个匹配项的下标1.题目描述2.思路3.解题思路(七)重复的子字符串1.题目描述2.思路3.解题过程(八)......