chap08_补充练习_指针.ppt
补充练习 例1:阅读源程序,写出运行结果 #include stdio.h void sub(int x, int y, int *z) { *z=y-x;} ? void main( ) { int a,b,c; sub(9,5,a); sub(3,a,b); sub(a,b,c); printf(“%d,%d,%d\n”,a,b,c);} 例6 阅读下列源程序,试说明其功能。 #includestdio.h void main() { int add (int *p , int n); int a[8] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 }; int *p , sum; p = a[0]; sum = add(p,8); printf(“sum=%d\n” , sum); } ? int add (int *p1 , int n) { int i , total = 0; for ( i=0 ; in ; i+=2 , p1+=2) total = total + *p1; return(total); } 示例:int a[10], *p=a; 则: p++ /*p与a[1]等价*/ *p++ /*结合性自右到左,++与*运算级别相同;相当于*(p++),作用是先得到P指向的变量的值(即*P),然后再执行p+1—p */ *(++p) /*先执行p+1—p,再执行*p */ (*p)++ /* 先执行*p,再执行*p的值加1,p值不变*/ 例11:逆序打印字符串 算法: 设字符串为q; 令p指向串尾; 打印字符*p,并将p向前移,直到p指向串首。 例12:编写一个函数判断一个字符串是否为回文(顺读与逆读相同)。 已知:字符串指针变量p(作参数) 结果:是(1)否(0) (返回值) 算法: 1. 令q指向最后一个字符; 2. 若*p==*q,则两指针向里靠拢,直到p=q,则 return 1,否则return 0 例13. 注意使用的区别: char d[10],*q; int x=5,*p=x; 例14 用指向字符串的指针变量实现字符串的输出。 #includestdio.h void main() { char s[]=“VC++ 6.0”,*p; p = s; printf(%s\n,s); printf(%s\n,p); } #includestdio.h void main() { char *s1=“VC++ 6.0; s1+=2; printf(%s\n,s1); } #includestdio.h void main() { char a[20],b[20],*p1,*p2; gets(a); 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); } 例17有一行字符,要求删去指定的字符。 #includestdio.h#includestring.hvoid?delchar(char?*,char?c);int?main(void){????char?str[80];????char?ch;????gets(str);????scanf(%c,ch);????delchar(str,ch);????printf(%s\n,str);????return?0;} 例17(另解)有一行字符,要求删去指定的字符。 #includestdio.h void main() {void del_ch(char *p ,char ch); char s[80] , *pt=s , ch; printf(请输入一个字符串:\n); gets(s); printf(请输入要被删除的字符:\n); scanf(“%c”,ch); del_ch(pt,ch); printf(新的字符串为:\n%s\n,s); } 例18 :阅读下列源程序,请写出运行结果。 ????#includestdio.h void main( ) { char a[
原创力文档

文档评论(0)