当前课程知识点:C语言程序设计 >  第9章 指针 >  9.4 指向二维数组的指针变量(上) >  指向二维数组的指针变量

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

指向二维数组的指针变量在线视频

下一节:指向二维数组的指针变量(下)

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

指向二维数组的指针变量课程教案、知识点、字幕

同学们好

这一节中我们将和同学们探讨

指针与二维数组的关系

和大家一起研究行指针

列指针

元素的地址

元素的内容

本节内容复杂

表达式等价形式众多

同学们要多思考

多练习

以便于掌握指针的精髓

用指针变量可以指向一维数组中的元素

也可以指向多维数组中的元素

但在概念上和使用上

多维数组的指针比一维数组的指针要复杂

为了说清楚指向多维数组元素的指针

先回顾一下多维数组的性质

以二维数组为例

假设我们定义个一个整型3行4列的二维数组a

下面我们对该数组进行分析

我们说二维数组a首先是一个一维数组

这个一维数组有3个元素

a[0]

a[1]

a[2]而每一元素又是一个一维数组

它包含4个元素(即4个列元素)

也就是这个二维数组有三行

每一行又是一个4个元素的一维数

那么

a[0]所代表的一维数组又包含4个元素:a[0][0]

a[0][1]

a[0][2]

a[0][3]

从对一维数组的研究我们可以得出结论

数组所有元素中相同的那部分是数组名

则a[0]为二维数组中这一行的数组名

同理a[1]为二维数组中第1行的数组名

a[2]为二维数组中第2行的数组名并且

我们可以认为二维数组是

数组的数组

即数组a是由3个一维数组所组成的

从二维数组的角度来看

a代表二维数组首元素的地址

那么二维数组的首元素不是一个整型变量

而是由4个整型元素所组成的一维数组

因此a代表的是首行(即第0行)的地址

a+1代表第1行的地址

a+2代表第2行的地址

即a

a+0

a+1

a+2是行地址

a[0]

a[1]

a[2]既然是一维数组名

而C语言又规定了数组名

代表数组首元素地址

因此a[0]代表一维数组a[0]

中第0列元素的地址

即取缔值a[0][0]

a[1]的是第1行首元素的地址

即a[1][0]的地址

a[2]的值是第2行首元素的地址

即a[2][0]的地址

请同学们考虑第0行第2列元素的地址

怎么表示?

a[0]为一维数组名

是数组中首元素的地址

那么对数组中各其它元素的地址

我们可以采取偏移量计算的方式

该一维数组中第2个元素

显然应该用首地址偏移一个元素

即a[0]+1来表示

那么对于a[0]数组用数组名

加偏移量方式来表示地址可以表示为

a[0]+0

a[0]+1

a[0]+2

a[0]+3

他们分别是a[0][0]

a[0][1]

a[0][2]

a[0]3]

元素的地址即取缔值a[0][0]

取缔值a[0][1]

取缔值a[0][2]

取缔值a[0][3])

对于a[1]数组中的元素我们

也可以用数组名加偏移量方式来表示地址

可以表示为:a[1]+0

a[1]+1

a[1]+2

a[1]+3

他们分别是a[1][0]

a[1][1]

a[1][2]

a[1]3]元素的地址即

取缔值a[1][0]

取缔值a[1][1]

取缔值a[1][2]

取缔值a[1][3])

a[2]数组也是如此

前已述及

a[0]和*(a+0)等价

a[1]和*(a+1)等价

a[i]和*(a+i)等价

因此

a[0]+1和*(a+0)+1的值都是取缔值a[0][1]

a[1]+2和*(a+1)+2的值都是取缔值a [1][2]

请注意不要将*(a+1)+2错写成*(a+1+2)

后者变成*(a+3)了

相当于a[3]

进一步分析

欲得到a[0][1]的值

用地址法怎么表示呢?

既然a[0]+1和*(a+0)+1

是a[0][1]的地址

那么

*(a[0]+1)就是a[0][1]的值

同理

*(*(a+0)+1)或*(*a+1)也是a[0][1]的值

同理

*(*(a+0)+1)或*(*a+1)也是a[0][1]的值

*(a[i]+j)或*(*(a+i)+j)是a[i][j]的值

今天的课就到这里

在这一节中我们和同学们探讨了

指针与二位数组的关系

和大家一起研究了

行指针、列指针、元素的地址

以及元素的内容

本节内容复杂

表达式等价形式众多

同学们要多思考,多练习

以便于掌握指针的精髓

同学们

我们下次课再见

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 二进制文件读写

--二进制文件读写

--二进制文件读写

指向二维数组的指针变量笔记与讨论

也许你还感兴趣的课程:

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