当前课程知识点:C语言程序设计 >  第11章 复杂数据类型 >  11.5 指向结构体类型数据的指针 >  指向结构体类型数据的指针

返回《C语言程序设计》慕课在线视频课程列表

指向结构体类型数据的指针在线视频

下一节:文件的基本概念和文件指针

返回《C语言程序设计》慕课在线视频列表

指向结构体类型数据的指针课程教案、知识点、字幕

同学们好

在这一节中

我们将和大家探讨定义

指向结构体类型数据的指针

这样我们可以学习复杂数据类型的

主要应用之一链表

请同学们多练习

特别是指针指向运算符和结构体

成员运算符之间的关系

为计算机系统核心编程打下基础

结构体变量的指针就是该变量

所占据的内存段的起始地址

可以定义一个指针变量

用来指向一个结构体变量

此时该指针变量的值是

结构体变量的起始地址

指针变量也可以用来指向

结构体数组中的元素

如果一个指针变量当中存放了

结构体变量的起始地址

则该变量为指向结构体

类型变量的指针变量

则该指针能指向结构体类型变量的

必要条件时该变量基类型的声明

必须为该结构体类型

下面通过一个简单例子来说明

指向结构体变量的指针变量的应用

例如

通过指向结构体变量的指针变量

输出结构体变量中成员的信息

在主函数中声明了struct student类型

然后定义一个变量stu-1

同时又定义一个指针变量p

它指向一个struct student类型的数据

在函数的执行部分将结构体变量stu-1的起始

地 址赋给指针变量p

也就是使p指向stu_1(如图)

然后对stu-1的各成员赋值

第一个 printf函数是输出stu1的各个成员的值

用stu_1.num表示stu-1中的成员num

余此类推

第二个printf函数

也是用来输出stu1各成员的值

但使用的是(*p).num这样的形式

(*p)表示p指向的结构体变量

(*p).num是p指向的结构体变量中的

成员num注意*p两侧的运算符

.

优先于

*运算符

*p.num就等价于*(p.num)了

就等价于*(p.num)了

所以要加()

先取p所指向的结构体变量

然后再使用.成员运算符取

结构体变量的成员

程序运行结果如下

可见两个printf函数输出的结果是相同的

在C语言中

为了使用方便和使之直观

可以把

(*P)

.num改用p->num来代替

它表示*p所指向的结构体变量中的num成员

同样

(*p).num等价于p->num

也就是说

以下三种形式等价

1

结构体变量.成员名

2

(*p).成员名

3

P->成员名

上面程序中最后一个

printf函数中的输出项表列可以改写为 p->num

p->name

p->sex

p->score 其中->称为指向运算符

请分析以下几种运算 p->n

得到p指向的结构体变量中的

成员n的值 p->n++

得到p指向的结构体变量中的成员n的值

用完该值后使它加1 ++p->n

++p->n

得到p指向的结构体变量中的成员n的值加一

然后再使用它

今天的内容就讲到这里

在这一节中

我们将和大家探讨定义

指向结构体类型数据的指针

这样我们可以学习复杂数据类型的

主要应用之一链表

请同学们多练习

特别是指针指向运算符和结构体成员

运算符之间的关系

为计算机系统核心编程打下基础

同学们

我们下次课再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

指向结构体类型数据的指针笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。