《C语言程序设计》课程教学资源:第十章 指针

第十章指针 C程序设计中使用指针可以 ●使程序简洁、紧凑、高效 ●有效地表示复条的数据结构 动态分配内存 ●得到多于一个的函数返回值
第十章 指针 C程序设计中使用指针可以: ⚫使程序简洁、紧凑、高效 ⚫有效地表示复杂的数据结构 ⚫动态分配内存 ⚫得到多于一个的函数返回值

§10.1指针的概念 ★变量与地址 内存中每个字节有一个编号地址 内存 0 程序中:int 2000 2001 float k Q002 编译或函数调用时为其分配内存单元 2003 2005 变量是对程序中数据 存储空间的抽象
§10.1 指针的概念 变量与地址 程序中: int i; float k; 内存中每个字节有一个编号-----地址 …... …... 2000 2001 2002 2005 内存 0 2003 i k 编译或函数调用时为其分配内存单元 变量是对程序中数据 存储空间的抽象

★指针与指针变量 ◆指针:一个变量的地址 ◆指针变量:专门存放变量地址的变量叫 指针 2000 整型变量i 2001 10 变量的地址 变量的内容 2002 2003 2004 变量 i pointer 指针变量变量地址(指针) 指向 地址存入 变量|变量值 指针变量
…... …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 指针与指针变量 ❖指针:一个变量的地址 ❖指针变量:专门存放变量地址的变量叫~ 2000 指针 指针变量 变量的地址 变量的内容 指针变量 变量 变量地址(指针) 变量值 指向 地址存入 指针变量

★&与*运算符 含义取交鲁 子素梦 指针所指向变量的内容 为逆 运 pointer 1 pointer 优先级:塾理編先级:2 pointer 2000 10 结合性:自 2000 整型变量i 2001 10 i pointer=&i=& i pointer) 2002 1 pointer (&1) 2003 2004 变量 i pointer 2005 2060- 指针变量 2006 pointer 指针变量,它的内容是地址量 pointer-指针的目标变量,它的内容是数据 & c1 pointer-指针变量占用内存的地址
&与*运算符 ❖含义 含义: 取变量的地址 单目运算符 优先级: 2 结合性:自右向左 含义: 取指针所指向变量的内容 单目运算符 优先级: 2 结合性:自右向左 ❖两者关系:互为逆运算 ❖理解 …... …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 指针变量 i_pointer-----指针变量,它的内容是地址量 *i_pointer----指针的目标变量,它的内容是数据 &i_pointer---指针变量占用内存的地址 2000 10 i_pointer *i_pointer &i_pointer i i_pointer &i &(*i_pointer) i *i_pointer *(&i) i_pointer = &i = &(*i_pointer) i = *i_pointer = *(&i)

★直接访问与间接访问 ◆直接访问:按变量地址存取变量值 ◆间接访问:通过存放变量地址的变量去访问变量 直接访问 2000 整型变量i 2001 20 2002 2003 2004 变量 i pointer 200 指针变量 2006 例1 pointer=20; 间接访问
直接访问与间接访问 ❖直接访问:按变量地址存取变量值 ❖间接访问:通过存放变量地址的变量去访问变量 例 i=3; -----直接访问 指针变量 …... …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 3 例 *i_pointer=20; -----间接访问 20

例k 直接访问 pointer; 间接访问 2000 整型变量 2001 0 2002 整型变量k 2003 2004 变量 pointer 2005 26 指针变量 2006
指针变量 …... …... 2000 2004 2006 2005 整型变量i 10 变量i_pointer 2001 2002 2003 2000 整型变量k 例 k=i; --直接访问 k=*i_pointer; --间接访问 10 例 k=i; k=*i_pointer;

§10.2指针变量 指针变量与其所指向的变量之间的关系 1 pointer 变量i 少*1 pointer 2000 h3 &i-i_pointer pointer 3 i_pointer=3 ★指针变量的定义 令一般形式:「存储类型]数据类型指针名; 例/int*p,p2 Aet:示定义指针变量 标识符 指针变量横c雨是me算符型 注意 pl, * p2 "pl, p2 2、指针变量名是pl,p2,不是“pl,p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值
§10.2 指针变量 指针变量与其所指向的变量之间的关系 指针变量的定义 ❖一般形式: [存储类型] 数据类型 *指针名; 3 变量i 2000 i_pointer *i_pointer i *i_pointer &i i_pointer i=3; *i_pointer=3 3 变量i 2000 i_pointer *i_pointer i *i_pointer &i i_pointer i=3; *i_pointer=3 指针变量本身的存储类型 指针的目标变量的数据类型合法标识符 表示定义指针变量 不是‘*’运算符 例 int *p1,*p2; float *q ; static char *name; 注意: 1、int *p1, *p2; 与 int *p1, p2; 2、指针变量名是p1,p2 ,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值

★指针变量的初始化 一般形式:[存储类型]数据类型*指针名=初始地址值; 例nt1: 给指针变量 p=&i; 变量必须已说明过 类型应一致 int 1 int *pt&i p=&i int 1; int *q=p 用已初始化指针变量作初值 例main() int static int *p=&i 不能用auto变量的地址 (×) 去初始化 static型指针
指针变量的初始化 一般形式:[存储类型] 数据类型 *指针名=初始地址值; 赋给指针变量, 不是赋给目标变量 例 int i; int *p=&i; 变量必须已说明过 类型应一致 例 int *p=&i; int i; 例 int i; int *p=&i; int *q=p; 用已初始化指针变量作初值 例 main( ) { int i; static int *p=&i; .............. } () 不能用auto变量的地址 去初始化static型指针

指针变量必须先赋值,再使用 例main() 〔inti=10; nt 2000 整型变量i printf(%od”,*p) 2001 10 2002 2003 危险! 2004 指针变量p 2005 随枳 maint 2006 nt p p=&k printf("%d”,*p)
例 main( ) { int i=10; int *p; *p=i; printf(“%d”,*p); } 危险! 例 main( ) { int i=10,k; int *p; p=&k; *p=i; printf(“%d”,*p); } 指针变量必须先赋值,再使用…... …... 2000 2004 2006 2005 整型变量i 10 指针变量p 2001 2002 2003 随机

例指针的概念 运行结果: maino a:10 f86 整型变量a i int a; pa:10 &a: f86(hex) f87 10 Int>pa=&a a=10 pa: f86(hex) f88 指针变量pa &pa: f88(hex) 189 86-- printf("a: %dn", a print ntf( pa: odIn"* f8a pa printf("&a: %x(hex)n", &a) fsb printf("pa: %x(hex)n" pa) f8c printf("&pa: %x(hex)n", &pa)
例 指针的概念 main() { int a; int *pa=&a; a=10; printf("a:%d\n",a); printf("*pa:%d\n",*pa); printf("&a:%x(hex) \n",&a); printf("pa:%x(hex) \n",pa); printf("&pa:%x(hex) \n",&pa); } 运行结果: a:10 *pa:10 &a:f86(hex) pa:f86(hex) &pa:f88(hex) …... …... f86 f8a f8c f8b 整型变量 a 10 指针变量pa f87 f88 f89 f86
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C语言程序设计》课程教学资源:第一章 C语言概述.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第8章 查找表.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第7章 图和广义表.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第6章 二叉树和树 6.1 二叉树 6.2 二叉树遍历.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第6章 二叉树和树 6.3 树和森林 6.4 树的应用.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第6章 二叉树和树 6.1 二叉树 6.2 二叉树遍历.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第5章 串和数组.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第5章 串和数组 5.1 串的定义 5.2 串的表示和实现 5.3 正文模式匹配.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第4章 栈和队列.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第4章 栈和队列 4.1 栈 4.2 栈的应用举例 4.3 队列.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第3章 排序.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第2章 线性表.ppt
- 中国药科大学:《数据结构》课程PPT教学课件(讲稿)第1章 绪论Data Structure(主讲:胡建华).ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿,第2版)第四章 三种控制结构程序设计.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿,第2版)第六章 过程.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿,第2版)第八章 常用控件与系统对象.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿,第2版)第五章 数组.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿,第2版)第二章 Vb简单的程序设计.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿,第2版)第九章 文件.ppt
- 高等学校计算机教材:《Visual Basic 6.0》课程教学资源(PPT课件讲稿,第2版)第三章 数据类型、常量、变量及表达式1.ppt
- 《C语言程序设计》课程教学资源:第十一章 结构体与共用体.ppt
- 《C语言程序设计》课程教学资源:第十二章 位运算.ppt
- 《C语言程序设计》课程教学资源:第十三章 文件.ppt
- 《C语言程序设计》课程教学资源:第二章 算法.ppt
- 《C语言程序设计》课程教学资源:第三章 数据类型运算符与表达式.ppt
- 《C语言程序设计》课程教学资源:第四章 最简单的C程序设计.ppt
- 《C语言程序设计》课程教学资源:第五章 选择结构程序设计.ppt
- 《C语言程序设计》课程教学资源:第六章 循环控制.ppt
- 《C语言程序设计》课程教学资源:第七章 数组.ppt
- 《C语言程序设计》课程教学资源:第八章 函数.ppt
- 《C语言程序设计》课程教学资源:第九章 预处理命令.ppt
- 《C语言程序设计》课程教学资源:程序设计基础复习.ppt
- 《C语言程序设计》课程教学资源:练习题-A.doc
- 《C语言程序设计》课程教学资源:练习题-B.doc
- 《C语言程序设计》课程教学资源:C程序设计新大纲.doc
- 《C语言程序设计》课程教学资源:C程序设计-期中考试.doc
- 《C语言程序设计》课程教学资源:复习大纲.doc
- 《C语言程序设计》课程教学资源:C语言复习范围.doc
- 《C语言程序设计》课程教学资源:C程序设计-期末复习.doc
- 《C语言程序设计》课程教学资源:第一章 语言概述 答案1.doc