当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

河南科技大学:《C语言程序设计》课程教学资源(PPT课件)第九章 指针(主讲:叶传奇)

资源类别:文库,文档格式:PPT,文档页数:86,文件大小:0.98MB,团购合买
9.1 指针的概念 9.2 指针变量 9.3 指针与数组 9.4 指针与字符串 9.5 指针与函数 9.6 返回指针值的函数 9.7 指针数组和多级指针
点击下载完整版文档(PPT)

第九章指针 9.1指针的概念 9.2指针变量 9.3指针与数组 94指针与字符串 9.5指针与函数 9.6返回指针值的函数 97指针数组和多级指针

9.1 指针的概念 9.2 指针变量 9.3 指针与数组 9.4 指针与字符串 9.5 指针与函数 9.6 返回指针值的函数 9.7 指针数组和多级指针 第九章 指针

假设已定义了三个变量itik编译时将变量名转换成变量的地址,对变量名的存I 都是对地址进行的。如prit9d3j的执行过程先找的地址20,从开始的两 字节取出数据如 : scant(“%od”,ci); 再如:k=计先从2002001取出的值,再从2002、2003取出j的值相加后将其和 入2004、2005字节单元中。这种按变量地址存取变量的方式叫直接存取方式 地地离香装和内查正南鑫落啊径益内元 字inti,k内存用户数据区号,地址 间接存取方式:将变量的地址里的° 的存单元中存 3 变量i 存放在另一个变量中,要存取变量200 的值,先找到存放i的地址的变量,从 变量j 中取出的地址(2002公后到2002 6 2001地址单元中存取的值在C中2004 变量k 可以定义整型变量、实型变量、 字符变量,也可以定义一种特殊的 变量,存放地址的变量。 point1=&i; point1的值就是30200 oint 1 2000.i的起始地址存取的值??

指针是C的一个重要概念和特色,使用指针可以有效的表示复杂的 数据结构;动态的分配内存;方便使用字符串和数组;能直接使用 内存地址;所以掌握指针的使用,能使程序高效、简洁。 9.1 地址和指针的概念 地址:如果在内存中定义了一个内存变量,在编译时给这个内存变量分配内存单元, 系统根据定义的内存变量的类型,分配一定长度的内存空间;(基本整型2,实型4, 字符型1)。内存区的每一个字节有一个编号,叫地址 。在地址所标志的内存单元中存 放数据。分别相当于旅馆里的房间号和房间号里的人。 内存单元的地址和内存单元的内容:如下定义: int i,j,k; 内存用户数据区 ┇ 3 6 9 ┇ 2000 变量 i 变量 j 变量k point_1 2000 2002 2004 3010 假设已定义了三个变量int i ,j ,k编译时将变量名转换成变量的地址,对变量名的存取 都是对地址进行的。如printf(“%d”,i);的执行过程先找i 的地址2000,从开始的两个 字节取出数据 如:scanf(“%d”,&i); 再如:k=i+j 先从2000、2001取出i的值,再从2002、2003取出j的值,相加后将其和放 入2004、2005字节单元中。这种按变量地址存取变量的方式叫直接存取方式 间接存取方式:将变量i的地址 存放在另一个变量中,要存取变量i 的值,先找到存放i的地址的变量,从 中取出i的地址(2000),然后到2000、 2001地址单元中存取i的值.在C中 可以定义整型变量、实型变量、 字符变量,也可以定义一种特殊的 变 量 , 存放地址的变量 。 point_1=&i; point_1 的值就是 2000,i的起始地址,存取i的值???

i=3将3送到变量有两种表示方法:9.2变量的指针和指向变量 (1)将3送到变量所标志的单元中的指针变量 2000 变量的指针:就是变量地址。 (2)将3送到变量p1nter1指针变量:就是存放变量地址的 “指向”的卓元中(所标的单靈量,用来指向另一个变量的的 变量。 ter 指针变量和它所指向的变量之间 2000 的关系用“”:表示“指向” 2000 如: pointer 1是指针变量, 指针;地址指向某一单元如 i*pointer1是 pointer1所指向的变量 号指向某一房间一样。C中将地址形 象化的称为指针,一个变量的地址称 pointer1 pointer 为该变量的指针。如2000是变量的200 指针。 2000 指针变量:如果某一变量专门用来存pier1也是一个变量, 放另一变量的地址(即指轨,则称其为和变量i是同一回赛 指针变量。指针变量中存放1=3;,* poiter1=3;两个语句的作用 针地址)。请区分指针变量 相同。* porter1=3.的意思是将3送到指针 概念。 变量 pointer1所指向的变量中

i=3;将3送到变量i中有两种表示方法: (1) 将3送到变量i所标志的单元中 3 i 2000 (2) 将3送到变量pointer_1所 “指向”的单元中(i所标志的单 元)pointer_1 2000 3 i 2000 指针: 地址指向某一单元如同房间 号指向某一房间一样。C中将地址形 象化的称为指针,一个变量的地址称 为该变量的指针。如2000是变量i的 指针。 指针变量:如果某一变量专门用来存 放另一变量的地址(即指针),则称其为 指针变量。指针变量中存放的值是指 针(地址)。请区分指针变量和指针的 概念。 9.2 变量的指针和指向变量 的指针变量 变量的指针:就是变量地址。 指针变量:就是存放变量地址的 变量,用来指向另一个变量的的 变量。 指针变量和它所指向的变量之间 的关系用“*” :表示“指向” 如: pointer_1是指针变量, *pointer_1是pointer_1所指向的变量 pointer_1 *pointer_1 2000 3 i 2000 *pointer_1也是一个变量, 和变量i是同一回事 i=3; *poiter_1=3; 两个语句的作用 相同。*ponter_1=3;的意思是将3送到指针 变量pointer_1所指向的变量中

《1》指针变量的定义:C中规定所有的变量必须先定义,按类型分 配内存单元。指针变量是专门用来存放地址的,必须将它定义为 针类型 如: 般格式: 基类型*指针变量 int l,i: float *pointer 3 int*pointer 1,*pointer 2 char *pointer 4 poiter1和 pointer2是两个指向整型变量的文里,mn炬垄尖型, 表示指针变量所能指向变量的类型 使指针变量指向另一个变量的方法: pointer1=&i;将变量的地址存放到变量 pointer1中, pointer1就指向了变量 pointer2=&j;将变量j的地址存放到变量 pointer2中, pointer2就指向 量j 说1)定义指针变量前面的“”表示变量的类型为指针型。变量 名是 pointer1称 ointer 2 2)定义指针变量时必须指定基类型(因为不同类型的变量在在 中点的存情空国不后在指针的运算中是不同的)一个看针交量 只能指同同一个类型的变量。如nr1、 pointer.2只能指整型 变量。 pointer1和 pointer2是整型变量,是poir1和ner2所指向 的变量。而 ointer1、 pointer2 是指针变量

《1》指针变量的定义:C中规定所有的变量必须先定义,按类型分 配内存单元。指针变量是专门用来存放地址的,必须将它定义为 “指针类型” 如: int i,j; int *pointer_1, *pointer_2; poiter_1和pointer_2是两个指向整型变量的指针变量,int 是基类型, 表示指针变量所能指向变量的类型 一般格式: 基类型 *指针变量 float *pointer_3; char *pointer_4; 使指针变量指向另一个变量的方法: pointer_1=&i;将变量i的地址存放到变量pointer_1中,pointer_1就指向了变量i pointer_2=&j; 将变量j的地址存放到变量pointer_2中,pointer_2就指向了变量j 说明(1) 定义指针变量前面的“*”表示变量的类型为指针型。变量 名是pointer_1和pointer_2 (2) 定义指针变量时必须指定基类型(因为不同类型的变量在内存 中占用的存储空间不同,在指针的运算中是不同的)一个指针变量 只能指向同一个类型的变量。如pointer_1、pointer_2只能指向整型 变量。 *pointer_1和 *pointer_2是整型变量,是pointer_1和pointer_2所指向 的变量。而pointer_1、pointer_2是指针变量

★变量与地址 内存中每个字节有一个编号-地址 内存 程序中:inti Q000 2001 float K, Q2002 编译或函数调用时为其分配内存单元 2003 2005 变量是对程序中数据 存储空间的抽象

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

指针与指针变量 指针:一个变量的地址 指针变量:专门存放变量地址的变量叫 指针 2000 整型变量i 2001 10 变量的地址 变量的内容 2002 2003 2004 变量 pointer 指针变量变量地址(指针) 指向 地址存入 指针变量 变量变量值

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

★&与*运算符 含义 单目运就滑笨害法算转为 琏聋量的内容 优先级解优先级2 pointer *1 pointer &i pointer 2000 10 结合性:自 2000 整型变量i 2001 10 i pointer=&i=&*i pointer) 2002 *i pointer=*(&i) 2003 2004 变量 pointer 05 2666 2006 指针变量 I pointer 指针变量,它的内容是地址量 pointer--指针的目标变量,它的内容是数据 & I 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)

★直接访问与间接访问 ◆直接访问:按变量地址存取变量值 ◆间接访问:通过存放变量地址的变量去访问变量 例i=3 直接访问 20 整型变量i 2001 20 2002 2003 2004 变量 i pointer 2005 2666 指针变量 2006 例* I pointer=20: 间接访问

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

直接访问 k=vi pointer 间接访问 000 整型变量1 2001 10 2002 整型变量k 2003|-1+0 2004 变量 i pointer 2005 2666 指针变量 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指针变量 指针变量与其所指向的变量之间的关系 pointer 变量i K>*i pointer 2000 &i— 1 pointer *i pointer B3 i_pointer=3 指针变量的定义 一般形式:[存储类型]数据类型*指针名; 例/int Aeat蝽示定义指针变量 标识符 指计变量就蒲c是*e算符型 注意: 1、int*pl,*p2;与int*pl,p2; 2、指针变量名是plp2,不是p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值

§9.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、指针变量定义后,变量值不确定,应用前必须先赋值

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共86页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有