02第九章指针.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文档。上传文档
查看更多
02第九章指针

第九章 指 针 第九章 指针 地址与指针 变量的指针和指向变量的指针变量 一维数组的指针和指向一维数组元素的指针变量 字符指针与字符串 指针数组 * * C语言程序设计 9.1 9.2 9.3 9.4 9.5 9.1 地址与指针 地址就是指针 形象地描述地址与存储单元的指向关系 9.2 变量的指针和指向变量的指针变量 一、变量的指针 C提供了专门的数据类型——指针 [指针]一种具有特殊意义的整型数,存放在专门的指针变量中。 [指针变量]存放某个变量的地址。 运算符: (1):取变量地址,例:a (2)*:取指针指向的对象,例:*(a)——a所指向的对象a (3)与*的优先相同,具有右结合性*a=*(a) 二、指针变量的定义与引用 格式:类型说明符 *变量名; 类型说明符:指针所指向变量的数据类型 C提供了两种访问变量的方法:直接与间接 直接:int x;x=3; 从工作表中查到变量x的首地址401,在将3放到以401开始的两个字节中 间接:int x,*p;p=x;*p=3; p 401 3 x 说明: (1)不同数据类型的变量地址不能放在同一个指针变量中 例:int *p; float *p; char *p; (2)指针变量必须指向一个变量后,才能对指针变量所指向的对象进行操作 例:float y,*p;*p=4.5(错误) (3)同一个指针变量可以指向数据类型相同的不同对象 例:int x,y,*p; p=x;p=y; 三、指针的运算 1、指针的赋值运算 例:int x,*p;p=x; 2、指针的加减运算 p+i=401+i*k(k=1,2,4,8) 3、 指针加-、减-运算 指针++后指向下一个数据位置, 指针――后指向上一个数据位置, 指针地址值的变化量取决于它所指向的数据类型。 ?指针的加-减-单项运算也分为前置和后置运算。 如 ① y=*p++; 相当于 y=*(p++); 根据优先级知;*和++优于=,*和++属于同一级,结合顺序从右到左,这是后置运算,先得到指针p指向的对象,再使指针p指向下一个存储单元 ② y=*++p 相当于 y=*(++p) p先加-指向下一个存储单元,再取指针p指向的对象 ③ y=(*p)++ 先取得p指向的对象,再使对象的值加1,即p并未发生变化。 ④ y=++(*p) 先使指针p指向的对象加1,再取指针p指向的对象 4.关系运算 两个指向同一组数据类型一样的指针可以进行关系运算,设有关系式; pq 如果p的位置在q的前头,则此关系式的结果为1,否则为0。 5.指针的相减 两个指针相减的结果不是地址量,而是数据个数,但要求两个指针(设为p和q)指向同一组数据类型。 数据个数=((p)-(q) )/ 数据长度 四、应用 swap(p1,p2) int *p1,*p2; {int p; p=*p1; *p1=*p2; *p2=p;} main() {int a,b; int *pointer_1,*pointer_2; scanf(%d,%d,a,b); pointer_1=a;pointer_2=b; if(ab)swap(pointer_1,pointer_2); printf(%d,%d\n,a,b); } 9.3一维数组的指针和指向一维数组元素的指针变量 一、一维数组的指针 C规定一维数组名代表一维数组的起始地址 说明: (1)int y[10]; y+i与y[i]相等 二、指向一维数组的指针变量 int i,a[10],*p;p=a; 三、用指针变量引用一维数组元素 例:用指针处理数据 main( ) { int data[10],*pint; int i; for(i=0;i10;i++) data[i]=i+1; pint=data; for (i=0;i10;i++,pint++) printf(“%d”,*pint); printf(“\n”); } 结果:1 2 3 4 5 6 7 8 9 10 例9-2:用指针变量完成对任意10个整数从大到小选择法排序 main() {int a[10],i,j,max,t,*p;p=a; for(i=0;i10;i++)sc anf(%d,p++); p=a; for(i=0;i9;i++) {max=i; for(j=i+1;j10;j++) if(*(p+j)*(p+max))max=j; t=*(p+i);*(p+i)=*(p+max);*(p+max)=t;} for(p=a

文档评论(0)

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

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

1亿VIP精品文档

相关文档