中国高校课件下载中心 》 教学资源 》 大学文库

南京师范大学:《C程序设计》课程教学课件(PPT讲稿)第九章 指针

文档信息
资源类别:文库
文档格式:PPT
文档页数:75
文件大小:1.39MB
团购合买:点击进入团购
内容简介
9.1指针 9.2量 9.3指向数组的指针变量 9.4指针与字符串 9.5指针与函数 9.6指针数组与多级指针 9.7命令行参数
刷新页面文档预览

第九章指针 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指针变量的初始化

指针变量必须先赋值,再使用 例main() int 1=10 nt 2000 整型变量i printf(%od”,*p) 2001 10 2002 2003 危险! 2004 指针变量p 2005 随枳 例ma 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 随机 指针变量必须先赋值,再使用

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档