- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章指针整理ppt
例7.10 将字符串a复制到字符串b void main() { char a[]=I am a boy., b[20]; int i; for(i=0;*(a+i)!=\0;i++) *(b+i)=*(a+i); *(b+i)=\0; printf(string a is:%s\n,a); printf(string b is:); for(i=0;b[i]!=\0;i++) printf(%c,b[i]); printf(\n); } 程序中,a和b都是数组名,因此*(a+i)表示的就是a[i],*(b+i)表示的是b[i]。 输出一个字符串,可以使用%s输出,还可以通过%c依次输出每个字符。 字符指针作函数参数 例7.11用函数调用实现字符串的复制 (1)用字符数组作函数参数 void main() { void copy(char from[],char to[]); char a[]=I am a teacher; char b[]=You are a student; copy(a,b); printf(string b=%s\n, b); } void copy(char from[],char to[]) { int i=0; while(from[i]!=\0) { to[i]=from[i]; i++; } to[i]=\0; } (2)使用字符指针变量作形参 void main() { void copy(char *from,char *to); char a[]=I am a teacher; char b[]=You are a student; char *x=a,*y=b; copy(x,y); /*使用copy(a,b);也可以*/ printf(string b=%s\n,b); } void copy(char *from,char *to) { for(;*from!=\0;form++,to++) *to=*from; *to=\0; } 对字符指针变量和字符数组的说明 1.字符数组由若干个元素组成,每个元素存放一个字符。而字符指针变量用来存放一个地址。 2.字符指针变量可以通过赋值进行字符串的复制,但字符数组不行,只能通过字符串拷贝函数来复制。 char *p; char str[14], a[]=I am a boy; p=a;(正确) str=a; (错误) 3. 对字符指针变量赋初值: char *p=I am a boy; 是将字符串“I am a boy”第一个元素的地址赋给p。 4. 指针变量的值是可以改变的。例 void main() { char *a=I love China; a=a+7; printf(%s\n,a); } 输出结果:China 指向函数的指针 函数也要占用内存。一个函数在编译之后,会生成二进制代码,并且编译器会为这个函数分配一个地址空间,这个地址空间的起始地址(入口地址),就称为函数的指针。 可以用一个指针变量指向函数,然后通过这个指针变量来调用此函数。 回顾第一章的例子: #include stdio.h void main( ) { int max(int x, int y); int a,b,c; scanf (%d, %d ,a ,b); c= max (a, b); printf (max= %d , c) } int max( int x , int y) { int z; if (xy) z=x; else z=y; return (z); } 改写这个例子中的主函数: #include stdio.h void main( ) { int max(int x, int y); int (*p)(int, int); /*定义指向函数的指针变量p*/ p=max;/*max是函数名,指向函数入口地址*/ int a,b,c; scanf (%d, %d ,a ,b);
文档评论(0)