南京师范大学:《C程序设计》第九章 指针

C程序设计 主讲教师:汪闽 南京师范大学 地图学与地理信息系统04级 专业选修课
C程序设计 南京师范大学 地图学与地理信息系统04级 专业选修课 主讲教师: 汪闽

第九章指针 9.1指针的概念 9.2指针变量 9.3指向数组的指针变量 94指针与字符串 9.5指针与函数 9.6指针数组与多级指针 97命令行参数
第九章 指针 9.1 指针的概念 9.2 指针变量 9.3 指向数组的指针变量 9.4 指针与字符串 9.6 指针数组与多级指针 9.5 指针与函数 9.7 命令行参数

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

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

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

91.3&与*运算符 含义 两者关系:互为逆运算 含义:取变量含义:取指针所指向变量的内容 理解 单目运算符单目运算符 pointer 1 pointer 优先级:2优先级:2 &i_pointer 2000 10 结合性:自 2000 整型变量i 2001 10 nter=&i=&*i pointer) 2002 is“ ointer=*(&i) 2003 2004 变量ⅰ pointer 2005 206- 指针变量 2006 pointer 指针变量,它的内容是地址量 1 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) 9.1.3 &与*运算符

914直接访问与间接访 直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 直接访问 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 9.1.4直接访问与间接访问

例k=i; 直接访问 pointer; 间接访问 例子图解 2000 整型变量 2001 0 2002 整型变量k 2003 2004 变量 i pointer 2005 2066 指针变量 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; 例子图解

9,2指针变量 92.1指针变量与其所指向的变量之间的关系 1 pointer 变量i 1 pointer 2000 3&i 1 pointer pointer ci pointer 指针变量的定义 般形式:[存储类型]数据类型*指针名 例int*pl,* float w 十变量 指 static char name, 算符塑标识符 注意 Int* ipl,*p2;与int*pl,p2; 2、指针变量名是plp2,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定.应用前必须先赋值
9.2.1指针变量与其所指向的变量之间的关系 指针变量的定义 一般形式: [存储类型] 数据类型 *指针名; 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、指针变量定义后,变量值不确定,应用前必须先赋值 9.2 指针变量

9,22指针变量的初始化 般形式:[存储类型]数据类型*指针名=初始地址值; 例赋给指针变量 变量必须已说明过 类型应一致 例int1; at >p=&i Int q-p, 用已初始化指针变量作初值 例main() 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型指针 9.2.2指针变量的初始化
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 南京师范大学:《C程序设计》第三章 顺序程序结构设计.ppt
- 南京师范大学:《C程序设计》第七章 函数3 new.ppt
- 南京师范大学:《C程序设计》第一章 C语言概论.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第9章 消隐.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第8章 曲线和曲面.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第7章 三维变换及三维观察.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第6章 二维变换及二维观察.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第5章 基本图形生成算法.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第4章 造型技术.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第3章 交互式技术.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第2章 图形设备.ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第1章 引言(主讲:陆枫).ppt
- 华中科技大学:《计算机图形学基础》课程电子教案(PPT教学课件)第10章 真实感图形绘制.ppt
- 上海理工大学:《电子商务基础与应用》课程PPT教学课件资源(第四版)第一章 认识电子商务.ppt
- 荆州职院:《计算机网络基础》首页.ppt
- 荆州职院:《计算机网络基础》第8章 网络安全.ppt
- 荆州职院:《计算机网络基础》第7章 internet技术.ppt
- 荆州职院:《计算机网络基础》第6章 广域网技术.ppt
- 荆州职院:《计算机网络基础》第5章 网络操作系统.ppt
- 荆州职院:《计算机网络基础》第4章 局域技术.ppt
- 南京师范大学:《C程序设计》第二章 数据类型、运算符号与表达式.ppt
- 南京师范大学:《C程序设计》第五章 循环结构程序设计.ppt
- 南京师范大学:《C程序设计》第八章 预编译命令.ppt
- 南京师范大学:《C程序设计》第六章 数组.ppt
- 南京师范大学:《C程序设计》第十一章 文件.ppt
- 南京师范大学:《C程序设计》第十章 结构体和共用体.ppt
- 南京师范大学:《C程序设计》第四章 选择结构程序设计.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)每章习题.doc
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)每章习题答案与提示.doc
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第十章 图纸布局与打印输出.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第十一章 共享AutoCAD数据和协同设计.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第十二章 创建三维模型.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第十三章 图纸集.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第一章 认识 AutoCAD.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第二章 设置绘图环境.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第三章 创建和编辑二维图形对象(一).ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第四章 创建和编辑二维图形对象(二).ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第五章 对象特性与图层.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第六章 利用绘图辅助工具精确绘图.ppt
- 《AutoCAD 2006中文版标准教程》教学资源(PPT课件)第七章 文字与表格.ppt