齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十章 指针

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

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

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

★&与运算符 章雾科帝杀燃梦巧度量的内 ointer I pointer 优先级:塾理編先级:2 &i_pointer 2000 10 结合性:自 2000 整型变量i 2001 10 i pointer=&i=&* i pointer) 2002 *i pointer =*(&i) 2003 2004 变量 i pointer 2005 2060- 指针变量 2006 pointer---指针变量,它的内容是地址量 I 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)

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

例k 直接访问 k=*i pointer 间接访问 Q20 整型变量i 2001 0 2002 整型变量k 2003 2004 变量 i 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指针变量 指针变量与其所指向的变量之间的关系 pointer 变量i S-1 pointer 2000 1 pointer 1 pointer i pointer=3 ★指针变量的定义 令一般形式:「存储类型]数据类型指针名; nt plp Aa蝽示定义指针变量 指汁变量t不果*a针)运算奇出标识符 注意 1、int*pl,*p2;与int*pl,p2 2、指针变量名是p1p2,不是*p1,*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、指针变量定义后,变量值不确定,应用前必须先赋值

★指针变量的初始化 一般形式:[存儲类型]数据类型*指针名=初始地址值; 给指针变量 Int p=&i 变量必须已说明过 类型应一致 例int; int *pit&i p=&i int 1; int *q=p; 用已初始化指针变量作初值 例main() i int 1; 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() i int 1=10 2000 整型变量1 2001 10 printf("%d, p) 2002 2003 危险! 2004 :指针变量p 2005 随枳 mal 2006 i int i=10, k nt“p p=&k printf("%,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 随机

★零指针与空类型指针 ☆零指针:(空指针) D指向地址为0的单元, 定义:指针变量值为零 系统保证该单元不作它用 表示:int*p=0 表示指针变量值没有意义 #define nULL 0 mt+ p=NULL,例 2 p=NUL与未对p赋值不同 用途 pYala * 2LL p2=(void *)p ◆避免指针变量的非法引用 ◆在程序中常作为状态比较 Void*类型指针 表示不指定p是指向哪一种 ●表示:Void*p 类型数据的指针变量 使用时要进行强制类型转换
零指针与空类型指针 ❖零指针:(空指针) ⚫定义:指针变量值为零 ⚫表示:int * p=0; p指向地址为0的单元, 系统保证该单元不作它用 表示指针变量值没有意义 #define NULL 0 int *p=NULL; ⚫p=NULL与未对p赋值不同 ⚫用途: ◆避免指针变量的非法引用 ◆在程序中常作为状态比较 例 int *p; ...... while(p!=NULL) { ...… } ❖void *类型指针 ⚫表示: void *p; ⚫使用时要进行强制类型转换 例 char *p1; void *p2; p1=(char *)p2; p2=(void *)p1; 表示不指定p是指向哪一种 类型数据的指针变量
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第九章 预处理命令.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第八章 函数.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(实验讲义)TURBO C上机操作实验部分.doc
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(教学大纲,实验,本科).doc
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十三章 文件.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十一章 结构体与共用体.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第一章 C语言概述.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(部分习题答案,前三章).doc
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)选择结构实验2.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)选择结构2.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)选择实验1.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第四章 输入输出.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第六章 循环控制.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第五章 选择结构程序设计.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第二章 程序的灵魂-算法.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第二次课思考题问答.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第三章 数据类型、运算符与表达式(c).ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第三次课思考题问答.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第七章 数组.ppt
- 齐齐哈尔大学:《C语言程序设计》课程教学资源(PPT课件讲稿)数组第二次实验.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第一章 C语言概述、第二章 数据类型、运算符与表达式 2.1-2.5.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第九章 指针 §9.4 字符串指针和指向字符串的指针变量 §9.5 函数的指针及指向函数的指针变量 §9.6 返回指针值的函数 §9.7 指针数组和指向指针的指针.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十章 结构体与共用体.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十二章 文件的基本操作.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第十三章 位运算 §13.1 位运算概述 §13.2 位运算符的使用方法.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第二章 数据类型、运算符与表达式 2.6-2.10、第三章 最简单的C程序设计 §3.1 C语句概述 §3.2 程序的三种基本结构.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第三章 最简单的C程序设计 §3.3 赋值语句 §3.4 数据输出 §3.5 数据输入 §3.6 程序举例.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第四章 逻辑运算和判断选取控制 §4.1 关系运算符 §4.2 逻辑运算符和逻辑表达式 §4.3 if 语句–––条件判断.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第四章 逻辑运算和判断选取控制 §4.4 switch 语句–––开关语句 §4.5 程序举例、第五章 循环控制.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第七章 函数(主讲:李丽娟).ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第六章 数组 §6.1 一维数组 §6.2 二维数组.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第六章 数组 §6.3 字符数组、第八章编译预处理 §8.1 宏定义 §8.2 文件包含 §8.3 条件编译.ppt
- 湖南大学:《C语言程序设计》课程电子教案(PPT教学课件)第九章 指针 §9.1 指针的概念 §9.2 指针变量的定义和引用 §9.3 数组的指针及指向数组的指针变量.ppt
- 《计算方法》第二章(2-3)牛顿( Newton)迭代方法.doc
- 《计算方法》第二章(2-3)续 Newton迭代法的变形.doc
- 《计算方法》第三章 线性方程组解法.doc
- 《计算方法》第三章(3-2)矩阵的三角分解.doc
- 《计算方法》第三章(3-4)迭代法.doc
- 《计算方法》第四章(4-1)代数多项式插值.doc
- 《计算方法》第四章(4-2)牛顿插值公式.doc