电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

善于利用指针

  • 资源ID:115003453       资源大小:1.66MB        全文页数:88页
  • 资源格式: PPT        下载积分:12金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要12金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

善于利用指针

uu学习内容学习内容 指针与指针变量的概念指针与指针变量的概念 指针变量的定义和引用指针变量的定义和引用 指针和地址运算指针和地址运算 指针与数组指针与数组 l l 数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量 l l 指向多维数组的指针指向多维数组的指针_数组指针数组指针 l l 元素为指针的数组元素为指针的数组_指针数组指针数组 指针与字符串指针与字符串 指针与动态内存分配指针与动态内存分配 多级指针多级指针 指针与数组作为函数的参数指针与数组作为函数的参数 指针作为函数的返回值指针作为函数的返回值_指针函数指针函数 指向函数的指针指向函数的指针_函数指针函数指针 带参数的带参数的mainmain函数函数 本章小结本章小结 1 . 内存内存 20002000 20012001 20022002 20052005 0 0 20032003 20042004 . . . 9.1 指针与指针变量的概念 1 1、内存地址内存地址内存中存储单元的编号内存中存储单元的编号 101102 201202 301302 401402 501502 601602 教学楼教学楼 教室号码教室号码 存储地址存储地址 教室教室 存储存储 单元单元 教室有容教室有容 量量 存储单元有存储单元有 大小大小( (字节单字节单 元、字单元元、字单元) ) 5050 存储存储 数据数据 注意:注意:内存单元的地址与内存单元中的数据是内存单元的地址与内存单元中的数据是 两个完全不同的概念。两个完全不同的概念。 2 内存内存 . . 0 0 20002000 20012001 20022002 20052005 20032003 20042004 . . 2、变量地址系统分配给变量的内存单元的起始地址 程序中程序中: : int i; int i; float k; float k; 内存中每个字节有一个编号内存中每个字节有一个编号-地址地址 i i k k 编译或函数调用时为其分配内存单元编译或函数调用时为其分配内存单元 变量变量是对程序中数据是对程序中数据 存储空间的抽象存储空间的抽象 i i的地的地 址址 k k的的 地址地址 注意:注意:在在TCTC或或BCBC下,系统将给变下,系统将给变 量量i i分配分配2 2字节字节的单元,而的单元,而VCVC下将是下将是 4 4字节字节的单元!的单元! 3 整型变量整型变量i i 变量变量i_pointeri_pointer . 1010 2000 2004 2006 2005 2001 2002 2003 3、指针与指针变量 l指针:一个变量的地址 l指针变量:专门存放变量地址的变量 20002000 指针变量指针变量 整型变量整型变量i i的内容的内容 指针变量指针变量i_pointeri_pointer的内容的内容 ( (是地址是地址) ) 变量的地址变量的地址 指针指针 指针变量指针变量 变量变量 变量地址变量地址( (指针指针) ) 变量值变量值 指向指向 地址存入地址存入 指针变量指针变量 4 l 直接访问:按变量名来存取变量值 l 间接访问:通过存放变量地址的变量去访问变 量 例例 i = i = 2020; ; -直接访问直接访问 指针变量指针变量 . 2000 2004 2006 2005 整型变量整型变量 i i 1010 变量变量i i_pointer_pointer 2001 2002 2003 20002000 3 3 例例 * *i_pointeri_pointer = = 2020; ; -间接访问间接访问 2020 8.1 指针变量的定义 4 4、变量值的存取方法、变量值的存取方法 将20送到i-pointer所指向的的单元中 5 指针变量指针变量 . 2000 2004 2006 2005 整型变量整型变量 i i 1010 变量变量i i_pointer_pointer 2001 2002 2003 20002000 整型变量整型变量 k k 1010 例例 k = i; k = i; k = *i_pointer; k = *i_pointer; -直接访问直接访问 -间接访问间接访问 6 §8.2 指针变量 1.指针变量的定义 l一般形式: 存储类型 数据类型 *指针名; 合法标识符 指针变量本身的存储类型 表示定义指针变量 不是*运算符 例 int *p1,*p2; float *q ; static char *name; 注意: 1、int *p1, *p2; 与 int *p1, p2; 2、指针变量名是p1,p2 ,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量, 这个规定 的类型称为该指针变量的“基类型”。 4、指针变量定义后,变量值不确定,应用前必须 先赋值 指针的目标变量的数据类型 图 未初始化的指针 7 5、在指针变量说明中,“*”是类型说明符,表示 其后的变量是指针类型。 而表达式中出现的“*”则是一个运算符用以表示 指针变量所指的变量。 8 2.为什么要为指针变量定义类型: 对指针进行进行移动1个位置的操作,如果是 整数型,就意味着移动2个字节,如果是字符 型,就意味着移动1个字节。这就造成指针移 动的不确定性,所以需要规定一个基类型。 3.14 2.12 p P+1 4byte p P+1 P+2 P+3 1 2 3 4 2byte 9 3、指针变量的运算 指针运算符(“ p= /*把i的地址赋给p,让p其指向变量i */ 这里,*p与变量i是等价的。 10 定义后 : : : : 1000 1002 1004 i j p (1)优先级:高于算术运算符,低于正负号运算符 。 int i , j , *p; /*此行的“*”与下面的不同*/ p= *p=3; j=*p+2; p= a=3; p= printf(“%d %d %d“,p,*p, 输出结果: -44 3 -42 a的 地址 p的 地址 p所指向a的 内容 i_pointer-指针变量,它的内容是地址量 *i_pointer-指针的目标变量,它的内容是数据 int *pointer_1, *pointer_2; pointer_1= pointer_2= printf(“a=%d,b=%dn”,a,b); printf(“*pointer_1=%d,*pointer_2= %dn”,*pointer_1,*pointer_2) ; return 0; 定义两个指针变量 使pointer_1指向a 使pointer_2指向b 直接输出变量a和b的值 间接输出变量a和b的值 14 #include int main() int a=100,b=10; int *pointer_1, *pointer_2; pointer_1= pointer_2= printf(“a=%d,b=%dn”,a,b); printf(“*pointer_1=%d,*pointer_2= %dn”,*pointer_1,*pointer_2) ; return 0; 此处*与类型名在一起。 此时共同定义指针变量 此处*与指针变量一起使用。此 时代表指针变量所指向的变量 15 int *pointer_1, *pointer_2; a=100;b=10; pointer_1= pointer_2= printf(“%d,%dn“,a,b); printf(“%d,%dn“,*pointer_1, *pointer_2); ¯ 两个printf函数作用是相 同吗? ¯ 程序中有两处出现*pointer_1和*pointer_2作用一样吗? ¯ “pointer_1=i=3; * *i_pointeri_pointer=3;=3; 18 8.2.3 指针的赋值运算(=) 指针的赋值运算:就是把地址赋值给指针变量。 指针的赋值运算可以是以下2种方式: 使用取地址运算符,把地址值赋值给指针变量。 如:int i, *pi ; pi= 把指针变量的值赋给另一个指针变量。 如:int i,*pa,*pb; pa= pb=pa; 19 注意: 1.不允许把一个数赋予指针变量,故下面的赋值是错误的: 2. 被赋值的指针变量前不能再加“*”说明符,如写为 *p= p=1000; 3.指针变量间的赋值和引用应保证基类型相同。 若有定义: int *p , i ; float *q , x ; 则:q= p= 20 例 main( ) int i=10; int *p; *p=i; printf(“%d”,*p); 危险! 例 main( ) int i=10,k; int *p; p= *p=i; printf(“%d”,*p); 指针变量必须先赋值,再使用 . 2000 2004 2006 2005 整型变量i 10 指针变量p 2001 2002 2003 随机 21 例例 intint i; i; int *p = int *p = ; 例例 void main ( )void main ( ) int i; int i; static int *p = static int *p = ( ( ) ) 不能用不能用autoauto变量的地址变量的地址 去初始化去初始化staticstatic型指针型指针 8.2.38.2.3、指针变量的赋值、指针变量的赋值 ØØ 初始化赋值初始化赋值 存储类型存储类型 数据类型数据类型 * *指针名指针名 = = 初始地址值初始地址值; 赋给指针变量,赋给指针变量, 不是赋给目标变量不是赋给目标变量 变量必须变量必须已说明过已说明过 类型类型应一致应一致 例例 intint i; i; int *p = int *p = ; int *q = int *q = p p; ; 用已初始化指针变量作初值用已初始化指针变量作初值 22 例例 int int a; a; int *p; int *p; p = p = ØØ 赋值语句赋值赋值语句赋值 例例 int a = 20 ;int a = 20 ; int *p, *q; int *p, *q; p = p = q = p;q = p; 整型变量整型变量a a 指针变量指针变量p p 指针变量指针变量q q . 20002000 . . 2020 20002000 20002000 23 例:int i,j,*p1,*p2; i='a' j='b' p1= p2= p2=p1 *p2=*p1; 24 5、零指针与空类型指针 Ø零指针:(空指针) l 定义: 指针变量值为零 l 表示: int * p = 0; p p指向地址为指向地址为0 0的单元的单元, 系统保证该单元不作它用系统保证该单元不作它用 表示指针变量值表示指针变量值没有意义没有意义 #define #define NULLNULL 0 0 int *p = NULL:int *p = NULL:

注意事项

本文(善于利用指针)为本站会员(简****9)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.