当前课程知识点:高级语言程序设计 >  指针 >  6.4 指针的运算 >  指针的运算

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

指针的运算在线视频

指针的运算

下一节:指针与一维数组

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

指针的运算课程教案、知识点、字幕

大家好

本节课我们学习的内容是指针的运算

指针的运算就是地址值的运算

有指针变量赋值

指针变量加一个整数

减一个整数

指针变量相减

两个指针变量比较

我们先看一看

给指针变量赋值

前面已经讲指针定义的时候

已经涉及到了

这里我们在强调一点

指针变量的值可以赋值为空值

也就是NULL

在这个时候是不允许访问其指向的对象的

因为指针对象的值是一个空的

那么像下面的例子

int *p;

p=NULL;

*p=6;

也就是P指向的对象是不允许的

是错误的

下面我们看指针变量的另一个运算

加 减一个整数

那么做这个运算有一个条件

是指针变量要指向一块连续存储区域

设有指针变量p

则p+1是指向同类型的下一个数据

p-1指向同类型的上一个数据

我们看下面的例子

int a[10],*p,*q,*r;

p=&a[2];

q=p-1;

等效于 q=&a[1];

r=p+1;

等效于 r=&a[3];

显然 p+i是指向同类型的后面第i个数据

P-i是指向同类型的前面的第i个数据

我们看示意图

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

这是数组a的十个元素

那么P指向a[2]

p+1那就是a[3]

它的后面是指的a[3]

前面那就是指的p-1

指向它前面的一个

那就是a[1]

那么下面我们看看

两个指针变量相减

两个指针变量相减同样有条件

条件和刚才是一样的

这两个指针变量

要指向同一块存储区

而且要求这两个指针变量类型相同

设指针变量为p q

则p-q为两个指针p q间元素的个数

我们举个例子

来看看p-q的意思

int a[10],*p,*q;

p=&a[7];q=&a[1];

printf(“%d\n”,p-q);/

它的结果显示为6

我们看看这个示意图

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

那么p就是指向a[7]

q指向a[1]

p-q就是这两者之间夹的数组中元素的个数

那么恰好就是6

在看看指针变量比较里面

两个指针变量比较

它的条件是

两个指针变量类型相同

且指向同一块连续存储区

这个和刚才是一样的

设指针变量分别为p q

则p q可以进行6种比较运算

< <= > >= == !=

若关系成立返回1

不成立返回0

看看例子

int a[10],*p,*q;

p=&a[7];q=&a[1];

printf(“%d\n”,p>q);

这个关系就是成立

因为p的值是a[7]的地址

a[7]的地址在a[1]的地址的后面

p大于q是成立的

结果输出为1

示意图就是如下

好了 关于指针的运算就讲完了

谢谢大家

高级语言程序设计课程列表:

程序设计和C语言

-1.1 计算机程序和计算机语言

--计算机程序和计算机语言

--致敬先辈:伟大的C语言之父——丹尼斯·里奇 程序员

-1.2 C程序的构成

--C程序的构成

--当前主流程序设计语言各自都有什么优势?

-1.3 C语言编辑、编译、运行(VC++2010学习版)

--C语言编辑、编译、运行(VC++2010学习版)

-练习题

顺序结构程序设计

-2.1 变量的定义和使用

--变量的定义和使用

-2.2 数据类型

--数据类型简介

--整型数据

--实型数据

-2.3 格式输出和格式输入

--格式输出printf函数

--格式输入scanf函数

--单个字符的输入输出

-2.4 运算符和表达式

--运算符和表达式

-2.5 结构化程序设计入门

--结构化程序设计入门

-练习题

选择结构程序设计

-3.1 为什么要用选择结构解决问题

--为什么要用选择结构解决问题

-3.2 如何正确表示选择结构中的条件

--如何正确表示选择结构中的条件

-3.3 用if语句及if语句嵌套实现选择结构

--用if语句及if语句嵌套实现选择结构

-3.4 用switch语句实现选择结构

--用switch语句实现选择结构

-练习

循环结构程序设计

-4.1 循环的引入

-- 为什么要用循环结构解决问题

-4.1 循环的引入--作业

-4.2 用while语句实现循环

--用while语句实现循环

-4.3 用do-while语句实现循环

-- 用do-while语句实现循环

-4.4 用for语句实现循环

-- 用for语句实现循环

-4.4 用for语句实现循环--作业

-4.5 何时需要用循环的嵌套

--何时需要用循环的嵌套

-4.6 如何提前终止循环和提前结束本次循环

--如何提前终止循环和提前结束本次循环

-习题--作业

数组

-5.1 数组类型的引入

--数组类型的引入

-5.2 一维数组的定义和初始化

--一维数组的定义和初始化

-5.3 一维数组的使用

--一维数组的使用

-5.4 二维数组的定义和初始化

--二维数组的定义和初始化

-5.5 二维数组的使用

--二维数组的使用

-习题--作业

指针

-6.1 什么是指针

--什么是指针

-6.2 指针类型及相关概念

--指针类型及相关概念

-6.3 指针变量的定义、赋值与使用

--指针变量的定义、赋值与使用

-6.4 指针的运算

--指针的运算

-6.5 指针与一维数组

--指针与一维数组

-6.6 指针的指针

--指针的指针

-6.7 指针与二维数组

--指针与二维数组

-习题--作业

函数

-7.1 为什么要自定义函数

--为什么要自定义函数

-7.2 函数的定义

--函数的定义

-7.3 函数的调用

--函数的调用

-7.4 函数参数的传递

--函数参数的传递

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

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

-7.6 变量的作用域和存储类型

--变量的作用域和存储类型

-习题--作业

字符串

-8.1 字符串的存储及输入输出

--字符串的存储及输入输出

-8.2 系统字符串处理函数

--系统字符串处理函数

-8.3 自定义字符串处理函数

--自定义字符串处理函数

-习题--作业

结构体和共用体

-9.1 结构体类型的定义

--结构体类型的定义

-9.2 结构体变量及指针变量的定义及使用

--结构体类型变量和指针变量的定义和使用

-9.3 结构体变量和指针变量作函数的参数

--用结构体变量和指向结构体的指针作函数参数

-9.4 结构体数组的定义和使用

--结构体数组的定义和使用

-9.5 共用体类型和枚举类型

--共用体和枚举类型

-习题--作业

动态内存分配

-动态内存分配--习题

文件

-习题--作业

指针的运算笔记与讨论

也许你还感兴趣的课程:

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