《C语言程序设计》第8章善于利用指针.ppt

#include stdio.h int main() { char *string=“I love China!”; printf(“%s\n”,string); string=”I am a student.”; printf(“%s\n”,string); return 0; } string 例8.18 将字符串a复制为字符串b,然后输出字符串b。 解题思路:定义两个字符数组a和b,用“I am a student.”对a数组初始化。将a数组中的字符逐个复制到b数组中。可以用不同的方法引用并输出字符数组元素,今用地址法算出各元素的值。 #include stdio.h int main() { char a[ ]=“I am a student.”,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); return 0; } printf(string b is:%s\n“,b); 例8.19 用指针变量来处理例8.18问题。 解题思路:定义两个指针变量p1和p2,分别指向字符数组a和b。改变指针变量p1和p2的值,使它们顺序指向数组中的各元素,进行对应元素的复制。 #include stdio.h int main() {char a[]=I am a boy.,b[20],*p1,*p2; p1=a; p2=b; for( ; *p1!=‘\0’; p1++,p2++) *p2=*p1; *p2=‘\0’; printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); return 0; } 8.4.2 字符指针作函数参数 如果想把一个字符串从一个函数“传递”到另一个函数,可以用地址传递的办法,即用字符数组名作参数,也可以用字符指针变量作参数。 在被调用的函数中可以改变字符串的内容 在主调函数中可以引用改变后的字符串。 8.4.2 字符指针作函数参数 例8.20 用函数调用实现字符串的复制。 解题思路:定义一个函数copy_string用来实现字符串复制的功能,在主函数中调用此函数,函数的形参和实参可以分别用字符数组名或字符指针变量。分别编程,以供分析比较。 (1) 用字符数组名作为函数参数 #include stdio.h int main() {void copy_string(char from[],char to[]); char a[]=I am a teacher.; char b[]=you are a student.; printf(“a=%s\nb=%s\n,a,b); printf(copy string a to string b:\n); copy_string(a,b); printf(“a=%s\nb=%s\n,a,b); return 0; } void copy_string(char from[], char to[]) { int i=0; while(from[i]!=\0) { to[i]=from[i]; i++; } to[i]=\0; } (2)用字符型指针变量作实参 copy_string不变,在main函数中定义字符指针变量from和to,分别指向两个字符数组a,b。 仅需要修改主函数代码 #include stdio.h int main() {void copy_string(char from[], char to[]); char a[]=“I am a teacher.”; char b[]=“you are a student.”; char *from=a,*to=b; printf(“a=%s\nb=%s\n,a,b); printf(\ncopy string a to string b:\n); copy_string(from,to); printf(“a=%s\nb=%s\n,a,b); return 0; } (3)用字符指针变量作形参和实参 #include stdio.h int

文档评论(0)

1亿VIP精品文档

相关文档