- 1
- 0
- 约6千字
- 约 41页
- 2018-08-06 发布于湖北
- 举报
第6章 指针 《C语言程序设计》 主要内容 指针的含义 指针变量 指针与数组 指针与函数 小结 6.1 指针的含义 计算机用内存来存储程序指令,也存储程序中变量的值。就像一栋大楼为每个房间分配一个房间号一样,内存将每个字节作为一个存储单元,并给每个存储单元指定一个编号作为其地址。 在程序中声明一个变量时,系统会根据数据类型的不同,为这个变量分配一定长度的连续存储空间用来存储数据。 6.1 指针的含义 在程序中一般是通过变量名来对存储单元进行存取操作的。当对源程序进行编译时,由编译程序将变量名转换为变量的地址,程序执行时对变量值的存取都是通过地址进行的。这种按变量地址存取变量值的方式称为“直接访问”方式。此时,地址体现了一种指向关系,所以也将一个变量的地址称为该变量的“指针”。 6.1 指针的含义 在C语言中可以定义一种特殊的变量,专门用来存放另一变量的地址(指针),这种变量称为指针变量。例如,指针变量i_pointer中存储的是变量ii的地址,当需要对变量ii进行存取时,可以通过指针变量i_pointer获得ii的地址。这种访问方式称为“间接访问”的方式。 6.2 指针变量 C语言规定所有变量在使用前必须定义。定义指针变量的一般形式为: 基类型 *指针变量名; 例如: int *pi; float *qf; 6.2 指针变量 :取地址运算符 取地址运算符“”表示的是求某一变量所占存储单元的存储地址,即对“”后面的变量进行取地址运算。它是单目运算符,按自右而左的方向结合。例如: int ia ; int *pi ; ia = 100 ; pi = ia ; ia的计算结果为变量ia的地址。 6.2 指针变量 与其他变量一样,可以在定义指针变量的同时对其赋初值,称为指针变量的初始化。指针变量初始化的一般形式为: 基类型 *指针变量名 = 初始地址值; 例如: int ia ; int *pi = ia ; /*在声明指针变量的同时进行初始化操作*/ ia = 100 ; 6.2 指针变量 如果在一开始时不能确定指针的指向,可以将指针变量初始化为空指针。在C语言中,空指针(NULL)是一种特殊的指针,它不表示任何指向,而是表示指针变量的一种状态。它在程序中经常作为一种状态标志使用。如下面语句把一个指针变量初始化为空指针: int *pi = NULL ; 6.2 指针变量 *:取地址运算符 指针运算符“*”(也称“间接访问”运算符),取指针指向的内容,即访问指针变量所指向的存储空间中的数据,该运算符后面必须是一个指针变量。例如: ia = *pi +100 ; 相当于: ia = ia + 100 ; 同样,与下面的语句也是等价的。 *pi = ia + 100 ; 6.2 指针变量 例6.1举例说明指针。 例6.1源程序 程序的输出结果为: icount = 1, ix = 1 6.2 指针变量 指针的运算包括算术运算、关系运算和赋值运算。 指针的算术运算主要有指针与整数的加减运算和指针之间的相减运算两种。 指针与整数的加减运算 指针可以加减一个整数,例如:p+n、p-n 、p++、++p、p--、--p, 指针作为地址量,与整数进行加减时,并不是简单地用指针的地址量与整数n进行直接的加减运算,而是按以下公式进行计算: (p)±n×基类型数据长度(字节数) 6.2 指针变量 指针的相减运算 具有相同基类型的指针可以做相减运算,与指针与整数相加减的原理类似,不是直接对两个地址进行相减运算,而是按以下公式计算: ((p)-(q))/基类型数据长度(字节数) 6.2 指针变量 指针的关系运算是指比较两个指针变量中存储的地址值之间的相对位置关系,例如:p q、p == q、p q等。当指针变量p中的地址值小于q中的地址值时,p q为真;当指针变量p中的地址值与q中的地址值相等时,p == q为真,也可以说这两个指针指向同一个变量。 由于空指针是一个指针的状态标志,所以经常会用到指针变量与空指针的之间进行等或不等的关系运算,即: p = = NULL ; 或 p != NULL ; 用于判断指针变量是否为空指针。 6.2 指针变量 指针变量和一般变量一样, 存放在它们之中的值是可以改变的, 也就是说可以在程序中通过赋值改变它们的指向, 假设: int ii, ij, *pi1, *pi2 ; ii = a ; ij = b ; pi1 = ii ; pi2 = ij ; 这时赋值表达式: pi2 = pi1 ; 就使pi2与pi1指向同一对象ii 6.3 指针与数组 定义指向数组元素
您可能关注的文档
- 发电机局放监测技术_IRIS-for EPRI seminar(完整版).pdf
- 结合微创诊断学论述为什么临床上L45椎间盘突出症常见幻灯片.ppt
- 有路跑 有梦追,这就是幸福模样.pdf
- 中国语文(戏曲)_附件.ppt
- 尚美佳常州房地产市场的月报(2011.05).pdf
- 俄汉对照菜谱——基辅鸡肉饼(完整版).pdf
- 中国汽车企业知多少_附件.docx
- 乌塔_王振凤资料.ppt
- 第7篇 单片机并行IO口的扩展.ppt
- 南宁国雄猪料介绍幻灯片.ppt
- 宣贯培训(2026年)《NYT 4512-2025 非洲菊疫病抗性鉴定技术规程》.pptx
- 宣贯培训(2026年)《NYT 4514-2025木薯副产物综合利用导则》.pptx
- 宣贯培训(2026年)《NYT 4513-2025木薯全程机械化生产技术规范》.pptx
- 宣贯培训(2026年)《NYT 4470-2025全株玉米青贮质量分级》.pptx
- 宣贯培训(2026年)《NYT 4468-2025玉米供需平衡表编制规范》.pptx
- 宣贯培训(2026年)《NYT 4469-2025全株玉米青贮质量评定 综合指数法》.pptx
- 宣贯培训(2026年)《NYT 4474-2025东北地区玉米-大豆轮作生产技术规程》.pptx
- 宣贯培训(2026年)《NYT 4472-2025玉米耐盐碱鉴定评价技术规程》.pptx
- 宣贯培训(2026年)《NYT 4473-2025玉米抗旱性鉴定评价技术规程》.pptx
- 宣贯培训(2026年)《NYT 4478-2025甘薯收获技术规程》.pptx
原创力文档

文档评论(0)