中国科技大学:电子科学与技术系《C语言程序设计》 第7章 指针

第7章指 白雪飞 baixfaustc. edu.cn 中国科学技术大学电子科学与技术系 Dept of Elec. Sci. Tech, USTC Fal22003
白 雪 飞 baixf@ustc.edu.cn 中国科学技术大学电子科学与技术系 Dept. of Elec. Sci. & Tech., USTC Fall, 2003 第7章 指 针

目录 指针概念 ●指针变量和指针运算 指向数组的指针 ●指向字符串的指针 指向函数的指针 返回指针值的函数 指针数组和指向指针的指针 C语言程序设计-第7章指针2
C语言程序设计 - 第7章 指针 2 目 录 ⚫ 指针概念 ⚫ 指针变量和指针运算 ⚫ 指向数组的指针 ⚫ 指向字符串的指针 ⚫ 指向函数的指针 ⚫ 返回指针值的函数 ⚫ 指针数组和指向指针的指针

指针( Pointer) 指针表示变量等的存储地址 ●使用指针可以获得紧凑、高效的代码 使用指针也可能使程序晦涩难懂 ●指针的使用灵活方便 指针操作容易出错且难以调试 指针与数组关系密切 C语言程序设计-第7章指针
C语言程序设计 - 第7章 指针 3 指针 (Pointer) ⚫ 指针表示变量等的存储地址 ⚫ 使用指针可以获得紧凑、高效的代码 ⚫ 使用指针也可能使程序晦涩难懂 ⚫ 指针的使用灵活方便 ⚫ 指针操作容易出错且难以调试 ⚫ 指针与数组关系密切

指针与地址 低地址 地址 2034H37H ■通过首地址和数 short s:/*0xA637*/ 2035HA6H 据类型可以访问 内存中某一数据308s[45 char c /*0x45*/ ■数据类型决定所 占用存储单元数42334 short *ps;/*0x2034*/ 4237H20H ●指针 ■就是地址 5702H88H char*pc;/*0x3088*/ ■和类型有关 5703H30H 高地址 C语言程序设计-第7章指针
C语言程序设计 - 第 7 章 指针 4 指针与地址 ⚫ 地址◼ 通过首地址和数 据类型可以访问 内存中某一数据 ◼ 数据类型决定所 占用存储单元数 ⚫ 指针◼ 就是地址 ◼ 和类型有关 3 7 H 4 5 H A 6 H . . . . . . . . . . . . . . . } s h o r t s ; / * 0 xA 6 3 7 * / c h a r c ; / * 0 x 4 5 * / } s h o r t * p s ; / * 0 x 2 0 3 4 * / } c h a r * p c ; / * 0 x 3 0 8 8 * / 3 4 H 低 地 址 高 地 址 2 0 H 8 8 H 3 0 H 2 0 3 4 H 2 0 3 5 H 3 0 8 8 H 4 2 3 6 H 4 2 3 7 H 5 7 0 2 H 5 7 0 3 H

指针变量和指针运 变量的指针和指针变量 指针变量的定义 。地址运算符和指针运算符 指针变量的引用 指针的运算 C语言程序设计-第7章指针5
C语言程序设计 - 第7章 指针 5 指针变量和指针运算 ⚫ 变量的指针和指针变量 ⚫ 指针变量的定义 ⚫ 地址运算符和指针运算符 ⚫ 指针变量的引用 ⚫ 指针的运算

变量的指针和指针变量 ●变量的指针 内存中存储某个变量的存储单元的首地址 ■指针(地址)实质上是一个整数(不是C的整型) ■可以通过变量的地址来间接的访问变量 指针变量 ■指针(地址)是一个数据,也可以用另一个变 量来存放,即指针变量 ■通过指针变量可以间接访问变量或内存数据 C语言程序设计-第7章指针6
C语言程序设计 - 第7章 指针 6 变量的指针和指针变量 ⚫ 变量的指针 ◼ 内存中存储某个变量的存储单元的首地址 ◼ 指针(地址)实质上是一个整数(不是C的整型) ◼ 可以通过变量的地址来间接的访问变量 ⚫ 指针变量 ◼ 指针(地址)是一个数据,也可以用另一个变 量来存放,即指针变量 ◼ 通过指针变量可以间接访问变量或内存数据

指针变量的定义 般形式 ■基类型*指针变量名; ●说明 “基类型”表示该指针指向的数据的类型 ■可以定义基类型为空类型void的指针变量 举例 int *pii ■char*pc1,c,*pc2 ■void*p; C语言程序设计-第7章指针7
C语言程序设计 - 第7章 指针 7 指针变量的定义 ⚫ 一般形式 ◼ 基类型 *指针变量名; ⚫ 说明 ◼ “基类型”表示该指针指向的数据的类型 ◼ 可以定义基类型为空类型void的指针变量 ⚫ 举例 ◼ int *pi; ◼ char *pc1, c, *pc2; ◼ void *p;

地址运算符( Address operator) 地址运算符& 获得操作数的地址(指针) ■单目运算符,自右向左结合,优先级较高 ■操作数应为各种类型的内存变量、数组元素 结构体成员等 ■操作数不能是表达式、常量、寄存器变量 ●举例 scanf("f &score)i ■inti,*p=&1; C语言程序设计-第7章指针8
C语言程序设计 - 第7章 指针 8 地址运算符 (Address Operator) ⚫ 地址运算符 & ◼ 获得操作数的地址(指针) ◼ 单目运算符,自右向左结合,优先级较高 ◼ 操作数应为各种类型的内存变量、数组元素、 结构体成员等 ◼ 操作数不能是表达式、常量、寄存器变量 ⚫ 举例 ◼ scanf("%f", &score); ◼ int i, *p=&i;

指针运算符( direction Operator) 指针运算符* 获得指针指向的内存数据 ■又称“间接访问运算符” 单目运算符,自右向左结合,优先级较高 ■操作数为具有指针(地址)意义的值 ●举例 ■inti,*p=&i; (*p)++;/*立++;*/ C语言程序设计-第7章指针9
C语言程序设计 - 第7章 指针 9 指针运算符 (Indirection Operator) ⚫ 指针运算符 * ◼ 获得指针指向的内存数据 ◼ 又称“间接访问运算符” ◼ 单目运算符,自右向左结合,优先级较高 ◼ 操作数为具有指针(地址)意义的值 ⚫ 举例 ◼ int i, *p=&i; (*p)++; /* i++; */

指针变量的引用 。指针变量也要“先赋值,后使用” 没有赋值的指针变量所存储的地址数据 是不确定的,对它的引用非常危险 对指针的赋值要注意类型匹配,必要时 可以使用强制类型转换,但要慎重使用 *p可以用于与指针p的基类型相同类型 的变量可以使用的任何场合 ●指针变量可以作为函数的参数 C语言程序设计-第7章指针
C语言程序设计 - 第7章 指针 10 指针变量的引用 ⚫ 指针变量也要“先赋值,后使用” ⚫ 没有赋值的指针变量所存储的地址数据 是不确定的,对它的引用非常危险 ⚫ 对指针的赋值要注意类型匹配,必要时 可以使用强制类型转换,但要慎重使用 ⚫ *p可以用于与指针p的基类型相同类型 的变量可以使用的任何场合 ⚫ 指针变量可以作为函数的参数
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科技大学:电子科学与技术系《C语言程序设计》 第6章 预处理.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第5章 函数.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第4章 数组.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第3章 C语言的基本语句 和程序结构设计.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第2章 数据类型、运算符和表达式.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第1章(1-2) C语言的程序结构.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第一章 C语言程序设计概述.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第10章 文件操作.ppt
- 中国科技大学电子科学与技术系:《C语言程序设计》 第9章 位运算.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第三篇 并行数值算法 第九章 稠密矩阵运算.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第三篇 并行数值算法 第八章 并行数值算法.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第七章 并行算法的一般设计过程.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第六章 并行算法的基本设计技术.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第五章 并行算法的一般设计方法.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第二篇 并行算法的设计 第四章 并行算法的设计基础.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十五章 并行程序设计环境与工具.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十四章 分布存储系统并行编程.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十三章 共享存储系统编程.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第四篇 并行程序设计 第十二章 并行程库设计基础.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)第三篇 并行数值算法 第十一章 快速傅里叶变换.ppt
- 中国科技大学:电子科学与技术系《C语言程序设计》 第8章 结构体.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第一章 电子商务概述.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第二章 Internet商务.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第三章 EDI商务.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第四章 企业电子商务应用.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第五章 网上支付与安全交易.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第六章 网络营销.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第七章 电子商务与物流.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)网站设计(案例:艺海拾贝).ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第一章 概述.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第七章 数组.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第三章 简单VB程序设计.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第九章 文件.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第二章 数据与表达式.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第五章 循环结构.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第八章 过程.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第六章 常用控件与多窗体.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第十一章 VB数据库开发.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第十三章 Activex控件.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿)第十二章 Visual basic多菜体应用.ppt