当前课程知识点:高级语言程序设计 > 指针 > 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
示意图就是如下
好了 关于指针的运算就讲完了
谢谢大家
-1.1 计算机程序和计算机语言
-1.2 C程序的构成
--C程序的构成
-1.3 C语言编辑、编译、运行(VC++2010学习版)
-练习题
-2.1 变量的定义和使用
--变量的定义和使用
-2.2 数据类型
--数据类型简介
--整型数据
--实型数据
-2.3 格式输出和格式输入
-2.4 运算符和表达式
--运算符和表达式
-2.5 结构化程序设计入门
-练习题
-3.1 为什么要用选择结构解决问题
-3.2 如何正确表示选择结构中的条件
-3.3 用if语句及if语句嵌套实现选择结构
-3.4 用switch语句实现选择结构
-练习
-4.1 循环的引入
-4.1 循环的引入--作业
-4.2 用while语句实现循环
-4.3 用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 共用体类型和枚举类型
--共用体和枚举类型
-习题--作业
-动态内存分配--习题
-习题--作业