没有合适的资源?快使用搜索试试~ 我知道了~
第8章C语言指针[参考].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 142 浏览量
2021-10-12
05:42:15
上传
评论
收藏 33KB PDF 举报
温馨提示
试读
18页
第8章C语言指针[参考].pdf
资源推荐
资源详情
资源评论
指 针(point)
引言 :
学习 Turbo C 语言 , 如果你不能用指针编写有效、正确
和灵活的程序 , 可以认为你没有学好 C语言。指针、地址、
数组及其相互关系是 C 语言中最有特色的部分。 规范地使用
指针 , 可以使程序达到简单明了 , 因此 , 我们不但要学会
如何正确地使用指针 , 而且要学会在各种情况下正确地使
用指针变量。
1. 指针和地址
1.1 指针基本概念及其指针变量的定义
1.1.1 指针变量的定义
我们知道变量在计算机内是占有一块存贮区域的 , 变
量的值就存放在这块区域之中 , 在计算机内部 , 通过访问
或修改这块区域的内容来访问或修改相应的变量的值。
Turbo C 语言中 , 对于变量的访问形式之一 , 就是先求出变
量的地址 , 然后再通过地址对它进行访问 , 这就是这里所
要论述的指针及其指针变量。
所谓变量的指针 , 实际上指变量的地址。 变量的地址属
于一种新的数据类型 , 即指针类型 。Turbo C 中, 一般用 "
指针 " 来指明这样一个表达式 &x 的类型 , 而用 " 地址 " 作为
它的值 , 也就是说 , 若 x 为一整型变量 , 则表达式 &x 的类
型是指向整数的指针 , 而它的值是变量 x 的地址。 同样 , 若
double d;
则&d 的类型是指向双精度 d 的指针 , 而&d 的值是双精度变
量 d 的地址。所以 , 指针 地址是用来叙述一个对象的两个
方面。虽然 &x、&d 的值分别是整型变量 x 和双精度变量 d
的地址 , 但&x、&d 的类型是不同的 , 一个是指向整型变量 x
的指针 , 而另一个则是指向双精度变量 d 的指针。在习惯
上, 很多情况下指针和地址这两
个术语混用了。
我们可以用下述方法来定义一个指针类型的变量。
int *ip;
首先说明了它是一指针类型的变量 , 注意在定义中不要漏
写符号 "*", 否则它为一般的整型变量了。 另外 , 在定义中
的 int 表示该指针变量为指向整型数的指针类型的变量 ,
有时也可称 ip 为指向整数的指针。 ip 是一个变量 , 它专门
存放整型变量的地址。
指针变量的一般定义为 :
类型标识符 * 标识符 ;
其中标识符是指针变量的名字 , 标识符前加了 "*"
号, 表示该变量是指针变量 , 而最前面的 " 类型标识符 " 表
示该指针变量所指向的变量的类型。 一个指针变量只能指向
同一种类型的变量 , 也就是讲 , 我们不能定义一个指针变
量, 既能指向一整型变量又能指向双精度变量。
指针变量在定义中允许带初始化项。如 :
int i, *ip=&i;
注意 , 这里是用 &i 对 ip 初始化 , 而不是对 *ip 初始化。和
一般变量一样 , 对于外部或静态指针变量在定义中若不带
初始化项 , 指针变量被初始化为 NULL, 它的值为 0。Turbo C
中规定 , 当指针值为零时 , 指针不指向任何有效数据 , 有
时也称指针为空指针。
1.1.2 指针变量的引用
既然在指针变量中只能存放地址 , 因此 , 在使用中不
要将一个整数赋给一指针变量。下面的赋值是不合法的 :
int *ip;
ip=100;
假设
int i=200, x;
int *ip;
我们定义了两个整型变量 i, x, 还定义了一个指向整型数
的指针变量 ip 。i, x 中可存放整数 , 而 ip 中只能存放整型
变量的地址。我们可以把 i 的地址赋给 ip:
ip=&i;
此时指针变量 ip 指向整型变量 i, 假设变量 i 的地址为 1800,
这个赋值可形象理解为下图所示的联系。
ip i
1800 ─→ 200
图 1. 给指针变量赋值
以后我们便可以通过指针变量 ip 间接访问变量 i, 例如 :
x=*ip;
运算符 *访问以 ip 为地址的存贮区域 , 而 ip 中存放的是变
量 i 的地址 , 因此 , *ip 访问的是地址为 1800 的存贮区域
( 因为是整数 , 实际上是从 1800 开始的两个字节 ), 它就是 i
所占用的存贮区域 , 所以上面的赋值表达式等价于
x=i;
另外 , 指针变量和一般变量一样 , 存放在它们之中的
值是可以改变的 , 也就是说可以改变它们的指向 , 假设
int i, j, *p1, *p2;
i='a';
j='b';
剩余17页未读,继续阅读
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一款极好用的 Office/WPS/Word/Excel/PPT/PDF工具箱软件 OfficeUtils 2.7
- 基于STM32的家庭环境参数检测系统设计
- 夺宝答题王答题小程序源码 开源可二开 Thinkphp内核
- Linux 系统下 Hadoop 安装配置教程.md
- 用于 CH32 MCU 的 CMake 实用程序(基于 STM32-CMake Proejct
- Linux 系统下 Hadoop 安装配置教程.md
- 基于ESO的 PMSM无传感器控制仿真-Matlab 2021b
- Python Programming - Hans-Petter Halvorsen
- Oracle 安装教程.md
- 深信服PT1-EDR题库
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功