网站大量收购闲置独家精品文档,联系QQ:2885784924

C的语言指针讲解.ppt

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

3、copy_string函数的函数体还可写成 { while(*from!=′\0′)   *to++=*from++;   *to=′\0′; } 4、由于字符可以用其ASCII码来代替所以函数体可简化为: {while(*from) *to++=*from++; *to=′\0′; } 5、上面的while语句还可以进一步简化为下面的while语句: while(*to++=*from++); 它与下面语句等价: while((*to++=*from++)!=′\0′); 将*from赋给*to,如果赋值后的*to值等于′\0′则循环终止(′\0′已赋给*to) 6、函数体中while语句也可以改用for语句: for(;(*to++=*from++)!=0;); 或 for(;*to++=*from++;); 7、也可以用字符数组名作函数形参,在函数中另定义两个指针变量p1,p2。函数copy_string可写为 void copy_string (char from[ ],char to[ ]) {char*p1,*p2; p1=from;p2=to;  while((*p2++=*p1++)!=′\0′); } 10.4.3 对使用字符指针变量和字符数组的讨论 字符数组和字符指针变量二者之间的区别主要有以下几点: (1) 字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),决不是将字符串放到字符指针变量中。 (2)赋值方式。对字符数组只能对各个元素赋值,不 能用以下办法对字符数组赋值。 char str[14]; str=″I love China!″; 而对字符指针变量,可以采用下面方法赋值: char *a; a=″I love China!″; (3)对字符指针变量赋初值: char *a=″I love China!″;等价于 char *a; a=″I love Chian!″; 而对数组的初始化: char str[14]={″I love China!″}; 不能等价于 char str[14]; str[ ]=″I love China!″; (4) 定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址。 例如: char str[10];   scanf(″%s″,str); (5) 指针变量的值是可以改变的,例如: 例10.19 改变指针变量的值 #include stdio.h void main() {char *a=″I love China!″; a=a+7; printf(″%s″,a); } (6) 若字符指针变量p指向字符串,就可以用指针变 量带下标的形式引用所指的字符串中的字符。如有: char *a=″I love China!″; (7) 字符数组中各元素的值是可以改变的(可以对它们再赋值),但字符指针变量指向的字符串中的内容是不可以被取代的(不能对它们再赋值)。如: char a[]=”House”; char *b=” House”; a[2]=’r’; /* 合法,r取代u */ b[2]=’r’; /* 非法,字符串常量不能改变 */ 10.5 指向函数的指针 10.5.1 什么是函数指针 如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。 可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。 10.5.2 用函数指针变量调用函数 如果想调用一个函数,除了可以通过函数名调用以外,还可以通过指向函数的指针变量来调用该函数。 例10.20 用函数求a和b中的大者。 (1)通过函数名调用函数。 # includestdio.h main() { int *p,i; int a[10]; p=a; for(i=0;i10;i++) scanf(%d,p++); printf(\n); p=a;//初始化 for(i=0;i10;i++,p++) printf(%d\n

文档评论(0)

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

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

1亿VIP精品文档

相关文档