先看两个例子:
1、编一个程序,输出字符数组中最大字符和前一半字符中的最大字符:
#include <string.h>
char *c(char a[ ],int n)
{char *p,*pm=&a[0];
for(p=a;p<a+n;p++)
if(*pm<*p) pm=p;
return(pm);}
main()
{char b[80];int n;
scanf("%s",b);
n=strlen(b);
printf("max1=%c\n max2=%c\n",*c(b,n),*c(b,n/2));}
2、编一个函数,将两个字符串连接成一个字符串:
char *s(char *p1,char *p2)
{static char a[160],*p=a;
while(*p1!='\0') *p++=*p1++;
while(*p2!='\0') *p++=*p2++;
*p=*p2;return(a);}
main()
{char s1[80],s2[80];
scanf("%s%s",s1,s2);
printf("%s\n",s(s1,s2));}
前者
printf("max1=%c\n max2=%c\n",*c(b,n),*c(b,n/2));}
与后者
printf("%s\n",s(s1,s2));}
调用函数时前者带*号,后者不带,是因为前者返回值是指针,后者返回值是数组首地址吗??
如果是,为什么要这样书写????