06-指针与字符串.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
06-指针与字符串

C语言程序设计——指针与字符串林大 经管学院 瞿华指针与字符串什么是指针指针基本运算指针与数组字符串简介指针与字符串处理C标准库与字符串处理函数字符串数组指针与字符串什么是指针指针基本运算指针与数组字符串简介指针与字符串处理C标准库与字符串处理函数字符串数组1.1 另一个视角下的下标下标是我们访问数组的基本工具a[i]通过使用整型变量i做下标,我们可以通过改变i的值的方式来访问数组a的不同元素.i=2,a[i]实际访问a[2]i=4,a[i]实际访问a[4]……1.1 另一个视角下的下标因此,我们可以把变量i看成是指向数组a中某个单元格的箭头,如下图所示:20123456789ia1.1 另一个视角下的下标因此,我们可以把变量i看成是指向数组a中某个单元格的箭头,如下图所示:40123456789ia1.2 指针理论上,如果我们能够声明一个恰好占满了整个计算机全部所有内存的数组,那么就可以使用下标变量来访问每一块内存。不妨给这个数组起名为X,给对应的下标变量起名为p那么我们就可以用X[p]=...;...=X[p];的方式来读写每一块内存。C提供了一种特殊的数据类型和相应的语法来实现和上述类似的功能。这个数据类型就是指针。1.2.1 间接寻址整个内存看成一个个连续的单元格内存地址800810p指向地址为8008的单元格8008内存地址1004p程序通过指针p,可以访问计算机的任意一块内存1.2.1 间接寻址10p实际使用时我们并不关心p中的内存地址具体数值,我们只关心它指向的单元格是哪个。1.2.2 什么是指针指针就是C语言实现间接寻址的工具。指针(Point)是:一种特殊的数据类型值是一个整数该值代表一个内存地址由该地址可以找到一块内存通常将其形象为一个指向某块内存的指针。通常忽视其具体的数值,只关心它指向哪里。我们一般说指针,实际是指指针变量10p1.2.2 什么是指针指针变量是变量,当然也需要先定义后使用程序需要知道指针所指向的内存,其中的数据类型这块内存里保存的是一个整数,还是一个双精度浮点数?指针变量的定义方法:在变量标识符前加*int *p; //定义了一个整形指针变量pint *p,a; //同时定义了一个整型指针变量p和一个普通变量aint *p,*q; //定义了两个整型指针变量p和q指针与字符串什么是指针指针基本运算指针与数组字符串简介指针与字符串处理C标准库与字符串处理函数字符串数组2.1 取地址与取内容运算符:用在普通变量前,取其地址p=a; //p指向a*运算符:用在指针变量前,取其指向的内存(进行间接寻址)b=*p; //把p指向的内存中的整数值赋给整形变量b。*p=30;//将30赋给p指向的内存中若p为指针,则*p相当于一个普通变量!见2-1.pointers.c(可使用调试单步执行查看结果)2.1 取地址与取内容int a,b,*p;?a?b?p2.1 取地址与取内容int a,b,*p;a=10;?a?b?p2.1 与*运算int a,b,*p;a=10;10a?b?p2.1 与*运算int a,b,*p;a=10;p=a;10a?b?p2.1 与*运算int a,b,*p;a=10;p=a;10a?bp2.1 与*运算int a,b,*p;a=10;p=a;b=*p;10a?bp2.1 与*运算int a,b,*p;a=10;p=a;b=*p;10a10bp2.1 与*运算int a,b,*p;a=10;p=a;b=*p;*p=20;10a10bp2.1 与*运算int a,b,*p;a=10;p=a;b=*p;*p=20;20a10bp2.1 与*运算int a,b,*p;a=10;p=a;b=*p;*p=20;(*p)++;20a10bp2.1 与*运算int a,b,*p;a=10;p=a;b=*p;*p=20;(*p)++;21a10bp2.1 练习问题1:运行下列代码后,*p的值是多少?int *p,a;a=10;p=a;2.1 练习问题2:运行下列代码后,a的值是多少?int *p,a;a=10;p=a;(*p)+=10;2.1 练习问题3:运行下列代码后,*p的值是多少?double *p,d;d=5.0;p=d; 2.1 练习问题4:运行下列代码后,d的值是多少?double *p,d;d=4.0;p=d;(*p)*=7.0; 2.2 比较运算可以用==和!=来比较两个指针是否指向同一个内存地址。也可以使用和来比较两个指针的内存地址,但这样做无实际意义,因此一般不使用。符号常量:NULL,表示一个指针未指向任何地址。NULL的值通常为0将未使用的指针变量赋值为NULL,是一个很好的编程习惯见2-2.compare.c2.3 指针占用空间sizeof(p)可以得到指针变量p所

文档评论(0)

little28 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档