第五讲-指针--青少年教育精选.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五讲-指针--青少年教育精选.ppt

江苏省青少年信息学奥林匹克冬令营(C语言班)-金中河西 第五讲 指 针 指针是C++中功能强大、被认为“太底层操作”的一个数据结构; 理解指针的原理和运算是高水平OI选手必须具备的能力。 功能强大的利器——指针 普通变量定义 int a=3; a=3204003; 指针概念、定义与内存分配 a 3204001 3204002 3204003 3204004 3204005 3204006 3204007 3 指针变量定义 int *p=NULL; p是一个指针变量,指向一个 内存空间,里面存放在是一 个内存地址,赋值为NULL(其 实就是0,表示特殊的空地址)。 指针概念、定义与内存分配 a 3204001 3204002 3204003 3204004 3204005 3204006 3204007 NULL 3 p 给指针变量p赋值 int a=3; int *p=NULL; p=a; p的值是3204003; *p的值是3; *p=4; 指针概念、定义与内存分配 a 3204001 3204002 3204003 3204004 3204005 3204006 3204007 NULL 3 p 3204003 4 指针概念、定义与内存分配 说 明 样 例 指针定义: 储存类型 *指针变量名 int a=3; int *p; 取地址运算符: p=a; 间接运算符: * *p=4; 指针变量直接存取的是内存地址 coutp; 结果是:3204003 间接存取的才是储存类型的值 cout*p; 结果是:4 例5.1 输入两个不同的浮点数,通过指针把最大值+10,并输出。 指针概念、定义与内存分配 指针变量的初始化 int *p=NULL; (NULL是特殊的地址0,叫零指针) int a; int *p=a; (p初始化为a的地址) int *p=new(int); (申请一个空间给p,*p内容不确定) 定义的局部指针变量,其内容(地址)是随机的,直接对它操作可能会破坏程序或系统内存的值,所以要保证先初始化或赋值。 指针的引用与运算 指针变量的+、-运算 int a=3; int *p=a; p++; cout*pendl; *p++; cout*pendl; 指针的引用与运算 a 3204001 3204002 3204003 3204004 3204005 3204006 3204007 NULL 3 p 3204003 4 3204004 5 指针变量的运算一般都是配合数组操作的 例5.2 输入n个整数,使用指针变量访问输出。 指针的引用与运算 指向数组的开始元素地址 不是简单的加1,而是根据类型int增加sizeof(int) 指针可以先不明确定义类型,只定义一个无类型的指针,以后根据需要再用强制类型转换的方法明确它的类型。 例5.3 无类型指针使用样例。 指针的引用与运算 必须明确p指向的空间存放的数据类型 数组名在一定意义上可以看成是指针 例5.4 用数组名访问数组。 指针与数组 例5.5 scanf使用数组名。 指针与数组 a当指针,a+i是指向数组的第i个元素的指针 可以改写成*(a+i) 指针也可以看成数组名 例5.6 动态数组,计算前缀和数组。b是数组a的前缀和的数组定义:b[i]=a[0]+a[1]+a[2]+…+a[i],即b[i]是a的前i+1个元素的和。 指针与数组 申请了连续的n个int型的空间 例5.7 行列转换。矩阵可以认为是N*M的二维数组。现在有一个巨大但稀疏的矩阵,N、M范围是[1..100000],有K个位置有数据,K的范围是[1..100000]。 矩阵输入的方式是从上到下(第1行到第N行)、从左到右(第1列到第M列)扫描,记录有数据的坐标位置(x,y)和值(v)。这是按照行优先的方式保存数据的,现在要求按列优先的方式输出数据,即从左到右、从上到下扫描,输出有数据的数值。 输入格式:第1行,3个整数N、M、K,范围都是[1..100000];下面有K行,每行3个整数:a b c,表示第a行第b列有数据c。数据在int范围内,保证是行优先的次序。 输出格式:1行,K个整数,是按照列优先次序输出的数。 指针与数组 指针与数组 输入样例: 4 5 9 1 2 12 1 4 23 2 2 56 2 5 78 3 2 100 3 4 56 4 1 73 4 3 34 4 5 55 输出样例: 73 12 56 100 34 23 56 78 55 1 2 3 4 5 1 12 23 2 56 78 3 100 56 4 7

文档评论(0)

liuxiaoyu98 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档